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
26
Something about Xcode ^^
adhumi
0
120
Inside Brut.
adhumi
0
83
Localization done bien
adhumi
1
250
Pushing Forward iOS Notifications
adhumi
0
180
Good practices for iOS releases
adhumi
0
200
What's new in iOS 9
adhumi
0
300
Rebranding an iOS app
adhumi
0
250
Cocoapods for private libraries
adhumi
0
120
Other Decks in Programming
See All in Programming
[Fin-JAWS 第38回 ~re:Invent 2024 金融re:Cap~]FaultInjectionServiceアップデート@pre:Invent2024
shintaro_fukatsu
0
400
Software Architecture
hschwentner
6
2.1k
Multi Step Form, Decentralized Autonomous Organization
pumpkiinbell
1
660
Rails アプリ地図考 Flush Cut
makicamel
1
110
2024年のkintone API振り返りと2025年 / kintone API look back in 2024
tasshi
0
210
ペアーズでの、Langfuseを中心とした評価ドリブンなリリースサイクルのご紹介
fukubaka0825
2
300
Writing documentation can be fun with plugin system
okuramasafumi
0
120
さいきょうのレイヤードアーキテクチャについて考えてみた
yahiru
3
730
チームリードになって変わったこと
isaka1022
0
190
最近のVS Codeで気になるニュース 2025/01
74th
1
250
『GO』アプリ データ基盤のログ収集システムコスト削減
mot_techtalk
0
110
SwiftUI Viewの責務分離
elmetal
PRO
0
140
Featured
See All Featured
Unsuck your backbone
ammeep
669
57k
Music & Morning Musume
bryan
46
6.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
How to train your dragon (web standard)
notwaldorf
90
5.8k
Fireside Chat
paigeccino
34
3.2k
YesSQL, Process and Tooling at Scale
rocio
171
14k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
31
2.1k
Practical Orchestrator
shlominoach
186
10k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
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