19
Continuously Delivering Mobile Project how to make CI/CD for Mobile easier Oleksandr Yefremov Mobile Lead at glomex GmbH

SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Embed Size (px)

Citation preview

Page 1: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Continuously Delivering Mobile Projecthow to make CI/CD for Mobile easier

Oleksandr Yefremov Mobile Lead at glomex GmbH

Page 2: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

$ ./scripts/makeProject.sh --release --patch

Page 3: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 4: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Code change

git / github flow

❕Pull Request❕

master develop feature release, hotfix

master featurevs

Page 5: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Code change

git / github flow

Pull Request

strict PR naming convention

Page 6: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 7: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Code change

git / github flow

Pull Request

strict PR naming convention

CI build

Slack #ci room notification

Page 8: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

CI build

Slack #ci room notification

Page 9: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Pull Request CI buildCode change

git / github flow

strict PR naming convention

Slack #ci room notification

Run tests Manual QA

Fabric (Crashlytics)

Page 10: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 11: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 12: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 13: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 14: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Prepare resources

fastlane deliver / supply

Android iOS

https://github.com/Triple-T/gradle-play-publisher

Page 15: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 16: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 17: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 18: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

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

Page 19: SE2016 iOS Oleksandr Yefremov "Continuously delivering mobile project"

Q&A

[email protected] http://glomex.com

http://oleksandr-yefremov.github.io