Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Test and distribute an iOS app with Gitlab CI
Search
Adrien Humilière
November 09, 2017
Programming
0
350
Test and distribute an iOS app with Gitlab CI
Cocoaheads Paris, November 2017
Adrien Humilière
November 09, 2017
Tweet
Share
More Decks by Adrien Humilière
See All by Adrien Humilière
Build an iOS app from an iPad
adhumi
0
30
Something about Xcode ^^
adhumi
0
120
Inside Brut.
adhumi
0
87
Localization done bien
adhumi
1
250
Pushing Forward iOS Notifications
adhumi
0
190
Good practices for iOS releases
adhumi
0
210
What's new in iOS 9
adhumi
0
310
Rebranding an iOS app
adhumi
0
250
Cocoapods for private libraries
adhumi
0
130
Other Decks in Programming
See All in Programming
WordPress Playground for Developers
iambherulal
0
120
複数ドメインに散らばってしまった画像…! 運用中のPHPアプリに後からCDNを導入する…!
suguruooki
0
450
本当だってば!俺もTRICK 2022に入賞してたんだってば!
jinroq
0
280
Agentic Applications with Symfony
el_stoffel
1
170
PHPによる"非"構造化プログラミング入門 -本当に熱いスパゲティコードを求めて- #phperkaigi
o0h
PRO
0
1.2k
PHPUnit 高速化テクニック / PHPUnit Speedup Techniques
pinkumohikan
1
1.3k
エンジニア未経験が最短で戦力になるためのTips
gokana
0
240
Chrome Extension Techniques from Hell
moznion
1
140
remix + cloudflare workers (DO) docker上でいい感じに開発する
yoshidatomoaki
0
120
自分のために作ったアプリが、グローバルに使われるまで / Indie App Development Lunch LT
pixyzehn
1
140
ミリしらMCP勉強会
watany
4
680
安全に倒し切るリリースをするために:15年来レガシーシステムのフルリプレイス挑戦記
sakuraikotone
5
2.6k
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
30k
Music & Morning Musume
bryan
46
6.4k
4 Signs Your Business is Dying
shpigford
183
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.2k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
28
1.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.4k
The Language of Interfaces
destraynor
157
24k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
118
51k
Making Projects Easy
brettharned
116
6.1k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
Transcript
Test and distribute an iOS app with Gitlab CI @adhumi
Cocoaheads Paris, November 2017
100% FASTLANE FREE Disclaimer
None
6 developers product business analyst designer QA 2-3 developers product
designer (shared with multiple teams)
Write code Merge Request QA Release candidate Submission & release
master dev Git workflow
+
None
Open source Source control & CI in the same place
CI config versionned with Git .gitlab-ci.yml
brew install gitlab-runner + register the runner in Gitlab
1 commit == 1 pipeline
1 commit ~= 1 pipeline
1 pipeline == n stages
stages: - build - test - archive
1 stage == n jobs
test:UI: stage: test script: - make test
1 pipeline == stages × jobs
None
How do we use it at Trainline?
On each Merge Request: Static analysis Unit tests Linter
stages: - build - test
build:static_analysis: stage: build script: - xcodebuild -scheme "$DEBUG_SCHEME" -destination "$SIMULATOR_DEVICE"
analyze only: - branches
test:unit_tests: stage: test script: - xcodebuild -scheme "$DEBUG_SCHEME" -destination "$SIMULATOR_DEVICE"
test only: - branches
test:lint: stage: test script: - ./Scripts/lint.sh allow_failure: true only: -
branches
None
Distribute
Production Debug
master dev
stages: - archive - package - deploy
archive:debug: stage: archive script: - agvtool new-version -all $(agvtool vers
-terse). $CI_PIPELINE_ID - xcodebuild -scheme "$DEBUG_SCHEME" -archivePath build/CapitaineTrain-${CI_COMMIT_SHA} archive only: - dev@capitainetrain/ios dev branch
archive:release: stage: archive script: - xcodebuild -scheme "$RELEASE_SCHEME" -archivePath build/CapitaineTrain-${CI_COMMIT_SHA}
archive only: - dev@capitainetrain/ios master branch
package: stage: package script: - xcodebuild -exportArchive -archivePath $ARCHIVE -
exportOptionsPlist export-options.plist -exportPath build only: - dev@capitainetrain/ios - master@capitainetrain/ios
deploy:itunes_connect: stage: deploy script: - altool --upload-app -f "${IPA}" -u
"${CAT_ITC_USERNAME}" -p "${CAT_ITC_PASSWORD}" only: - dev@capitainetrain/ios - master@capitainetrain/ios
None
None
None
None
Thanks! On recrute (des devs Android) @adhumi