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
390
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
Attention to details
adhumi
0
13
Build an iOS app from an iPad
adhumi
0
66
Something about Xcode ^^
adhumi
0
140
Inside Brut.
adhumi
0
130
Localization done bien
adhumi
1
280
Pushing Forward iOS Notifications
adhumi
0
210
Good practices for iOS releases
adhumi
0
240
What's new in iOS 9
adhumi
0
370
Rebranding an iOS app
adhumi
0
270
Other Decks in Programming
See All in Programming
文字コードの話
qnighy
41
15k
Go 1.26でのsliceのメモリアロケーション最適化 / Go 1.26 リリースパーティ #go126party
mazrean
1
210
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
400
Oxlint JS plugins
kazupon
1
1.1k
CSC307 Lecture 11
javiergs
PRO
0
580
15年続くIoTサービスのSREエンジニアが挑む分散トレーシング導入
melonps
2
450
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
15年目のiOSアプリを1から作り直す技術
teakun
0
510
2025年の活動の振り返り
hideg
0
120
並行開発のためのコードレビュー
miyukiw
2
2k
オブザーバビリティ駆動開発って実際どうなの?
yohfee
1
530
Package Management Learnings from Homebrew
mikemcquaid
0
280
Featured
See All Featured
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
AI: The stuff that nobody shows you
jnunemaker
PRO
3
320
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
9.9k
How to train your dragon (web standard)
notwaldorf
97
6.5k
A Tale of Four Properties
chriscoyier
162
24k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
210
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
81
HDC tutorial
michielstock
1
460
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
220
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
180
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