Continuously Delivering Mobile Projecthow to make CI/CD for Mobile easier
Oleksandr Yefremov Mobile Lead at glomex GmbH
Pull Request CI build
Run tests
Code change
Manual QA
Changelog
Sign Off
Prepare resources
git / github flow
strict PR naming convention
Slack #ci room notification
Fabric (Crashlytics)
Automatic generation
./bumpVersion.sh --minor
fastlane deliver / supply
Publish Artifact
S3 / Stores
Code change
git / github flow
❕Pull Request❕
master develop feature release, hotfix
master featurevs
Pull Request
strict PR naming convention
$ curl https://api.github.com/repos/org/repo/pulls/52 2>/dev/null | jq '.title';
"[VVS-262] Implement Ad pause/resume functionality."
* thanks to StackOverflow
Changelog
Automatic generation
Code change
git / github flow
Pull Request
strict PR naming convention
CI build
Slack #ci room notification
Pull Request CI buildCode change
git / github flow
strict PR naming convention
Slack #ci room notification
Run tests Manual QA
Fabric (Crashlytics)
Run tests Manual QA
Fabric (Crashlytics)
Deploy an app automatically to Fabric Beta using Travis-CI https://gist.github.com/ChrisXu1221/23e05c6fe469c6a8aaf6
* thanks to ChrisXu1221
Pull Request CI build
Run tests
Code change
Manual QA
git / github flow
strict PR naming convention
Slack #ci room notification
Fabric (Crashlytics)
Sign Off
./bumpVersion.sh --minor
Sign Off
./bumpVersion.sh --minor
$ ./scripts/bumpVersion.sh --patch|--minor|--major|--exact "1.0.1"
git commit -m "Upgraded version to #{build_number}" git tag -a "#{build_number}" && git push --tags
# iOS - push podspec as well push_framework_podspec version: build_number
Pull Request CI build
Run tests
Code change
Manual QA
Changelog
Sign Off
git / github flow
strict PR naming convention
Slack #ci room notification
Fabric (Crashlytics)
Automatic generation
./bumpVersion.sh --minor
Prepare resources
fastlane deliver / supply
Prepare resources
fastlane deliver / supply
Android iOS
https://github.com/Triple-T/gradle-play-publisher
Pull Request CI build
Run tests
Code change
Manual QA
Changelog
Sign Off
git / github flow
strict PR naming convention
Slack #ci room notification
Fabric (Crashlytics)
Automatic generation
./bumpVersion.sh --minor
Prepare resources
fastlane deliver / supply
Publish Artifact
S3 / Stores
Publish Artifact
S3 / Stores
apply plugin: 'maven-publish' repositories { maven { url "s3://$s3_bucket/$s3_path" credentials(AwsCredentials) { accessKey s3_access_key secretKey s3_secret_key } }}
Android
Publish Artifact
S3 / Stores
# fastlanes3( access_key: ENV["S3_ACCESS_KEY"], secret_access_key: ENV["S3_SECRET_KEY"], bucket: ENV["S3_BUCKET"], # IPA or ZIP file with framework ipa: "#{zip_file}", region: "eu-west-1", path: path, upload_metadata: false )
iOS
Pull Request CI build
Run tests
Code change
Manual QA
Changelog
Sign Off
Prepare resources
git / github flow
strict PR naming convention
Slack #ci room notification
Fabric (Crashlytics)
Automatic generation
./bumpVersion.sh --minor
fastlane deliver / supply
Publish Artifact
S3 / Stores