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
410
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Test and distribute an iOS app with Gitlab CI
Cocoaheads Paris, November 2017
Adrien Humilière
November 09, 2017
More Decks by Adrien Humilière
See All by Adrien Humilière
Attention to details
adhumi
0
23
Build an iOS app from an iPad
adhumi
0
99
Something about Xcode ^^
adhumi
0
160
Inside Brut.
adhumi
0
150
Localization done bien
adhumi
1
300
Pushing Forward iOS Notifications
adhumi
0
230
Good practices for iOS releases
adhumi
0
250
What's new in iOS 9
adhumi
0
400
Rebranding an iOS app
adhumi
0
290
Other Decks in Programming
See All in Programming
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
270
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
160
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
150
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
130
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
500
「人を評価する AI」の設計と実装
ryoyanara
0
220
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
2
340
Go 1.27 における memory allocation の高速化
andpad
0
280
Flow は今どうなっているか
mizdra
PRO
0
660
30年振りにコンパイラの定数整数除算を改善した
herumi
3
560
How I Won Prize Money at a Hackathon Using Codex and Symphony Alpha
yasei_no_otoko
0
120
楽しそうなつよつよエンジニアと目が死んでる僕/A brilliant engineer having a blast, and dead-eyed me.
3l4l5
2
210
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.4k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
Accessibility Awareness
sabderemane
1
180
The Cult of Friendly URLs
andyhume
79
7k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.4k
Faster Mobile Websites
deanohume
310
32k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Leo the Paperboy
mayatellez
8
2.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
510
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
470
BBQ
matthewcrist
89
10k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.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