
fastlane ã䜿çšãã GitLab ã iOS ã¢ããªã±ãŒã·ã§ã³ãåéã眲åããApp Store ã«å ¬éããæ¹æ³ã
ç§ãã¡ã¯æè¿ã GitLab ãš ã ããã§ã¯ãiOS ã¢ããªãæ§ç¯ããŠå®è¡ããTestFlight ã«å ¬éããæ¹æ³ãèŠãŠãããŸãã ã©ãã ãã¯ãŒã«ããã§ãã¯ããŠãã ãã , ã¢ã»ã³ããªãååŸããéçºããã®ãšåã iPad Pro ã§ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ã ããŒãžã§ã³ã®æŽæ°ãååŸããŸãã
ããã§åãäžããŸã ãäžç·ã«ãããªãé²ç»ããŸããã
Apple Storeã®èšå®ã«ã€ããŠäžèš
ãã¹ãŠãçµã³ä»ããã«ã¯ãApp Store ã¢ããªãé åžèšŒææžãããããžã§ãã³ã° ãããã¡ã€ã«ãå¿ èŠã§ãã
ããã§æãé£ããã®ã¯ãApp Store ã§ã®çœ²åæš©éã®èšå®ã§ãã ããã«ã€ããŠã¯ãèªèº«ã§çè§£ããŠããã ããã°å¹žãã§ãã åããŠã®æ¹ã«ã¯æ£ããæ¹åãžæ¡å ããŸãããApple èšŒææžã®ç®¡çã®è€éãã«ã€ããŠã¯ããã§ã¯èª¬æããŸããããŸããApple èšŒææžã¯åžžã«å€åããŠããŸãã ãã®æçš¿ã¯ãå§ããã®ã«åœ¹ç«ã¡ãŸãã
ç§ã®ã¢ããª
App Store Connect ã«ã¢ããªãå¿
èŠãªã®ã§ãæ§æçšã® ID ãå¿
èŠã§ã .xcodebuildã ãããã¡ã€ã«ãšã¢ããªã±ãŒã·ã§ã³ ID ã¯ãã³ãŒã ãã«ããäŸ¡æ Œãšå¯çšæ§ãããã³ãã¹ã ã¢ããªã±ãŒã·ã§ã³ããŠãŒã¶ãŒã«é
åžããããã® TestFlight æ§æãçµã¿åãããŸãã å
¬éãã¹ãã¯è¡ããªãã§ãã ãããå°èŠæš¡ãªã°ã«ãŒãããããã»ããã¢ãããç°¡åã§ãApple ããã®è¿œå ã®èš±å¯ãå¿
èŠãªãå Žåã¯ããã©ã€ããŒã ãã¹ãã§ååã§ãã
åæåãããã¡ã€ã«
ã¢ããªã®ã»ããã¢ããã«å ããŠãApple Developer ã³ã³ãœãŒã«ã® [èšŒææžãèå¥åããããã¡ã€ã«] ã»ã¯ã·ã§ã³ã§äœæããã iOS é åžããŒãšéçºããŒãå¿ èŠã§ãã ãããã®èšŒææžã¯ãã¹ãŠãããããžã§ãã³ã° ãããã¡ã€ã«ã«çµã¿åãããããšãã§ããŸãã
èªèšŒããããŠãŒã¶ãŒã¯èšŒææžãäœæã§ããå¿ èŠããããŸããããã§ãªãå Žåã¯ãæ¬¡ã®æé ãå®è¡ããŸãã ãšã©ãŒã衚瀺ãããŸãã
ãã®ä»ã®ãªãã·ã§ã³
ãã®ç°¡åãªæ¹æ³ä»¥å€ã«ããèšŒææžãšãããã¡ã€ã«ãæ§æããæ¹æ³ããããŸãã ãããã£ãŠããããŸã§ãšç°ãªãåãæ¹ãããå Žåã¯ãé©å¿ããå¿
èŠããããããããŸããã æãéèŠãªããšã¯ãèšå®ãå¿
èŠã§ãããšããããšã§ã .xcodebuildããã¯å¿
èŠãªãã¡ã€ã«ãæããŸããããŒãã§ãŒã³ã¯ãã©ã³ããŒãå®è¡ããŠããååã®ãŠãŒã¶ãŒããã«ã ã³ã³ãã¥ãŒã¿ãŒäžã§å©çšã§ããå¿
èŠããããŸãã ããžã¿ã«çœ²åã«ã¯ fastlane ã䜿çšããŠããŸããåé¡ãããå ŽåããŸãã¯è©³çްãç¥ãããå Žåã¯ã詳现ã確èªããŠãã ããã .
ãã®äŸã§ã¯ã次ã®ã¢ãããŒãã䜿çšããŠããŸã ããããå®éã®äœ¿çšã«ã¯ããããããã®æ¹ãé©ããŠããŸã .
GitLab ãš fastlane ã®æºå
CIã©ã³ããŒã®æºå
ãã®ããŒã¿ããã¹ãŠåéããããMacOS ããã€ã¹äžã® GitLab ã©ã³ããŒã®æ§æã«é²ã¿ãŸãã æ®å¿µãªãããiOS ã¢ããªã¯ MacOS äžã§ããäœæã§ããŸããã ãããããã¹ãŠãå€ããå¯èœæ§ãããããããã®åéã§ã®é²æ©ãæåŸ ããå Žåã¯ã次ã®ãããªãããžã§ã¯ãã«æ³šç®ããŠãã ããã О ãããã³å éšã¿ã¹ã¯ .
ã©ã³ããŒã®ã»ããã¢ããã¯éåžžã«ç°¡åã§ãã çŸåšã«åŸã£ãŠãã ãã .
泚èšã ã©ã³ããŒã¯å®è¡å¯èœããã°ã©ã ã䜿çšããå¿
èŠããããŸã shellããã¯ãiOS ããã«ãããããã«å¿
èŠã§ãã macOSã³ã³ãããä»ããã«ããŠãŒã¶ãŒãšããŠçŽæ¥äœæ¥ããå Žåã shellããã«ããšãã¹ãã¯ã©ã³ã㌠ãŠãŒã¶ãŒãšããŠãã«ã ãã¹ãäžã§çŽæ¥å®è¡ãããŸãã ã³ã³ããã»ã©å®å
šã§ã¯ãªããããé²èЧããæ¹ãããã§ããã ã ããããªãã¯äœãèŠéããŸããã
sudo curl --output /usr/local/bin/gitlab-runner https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-darwin-amd64
sudo chmod +x /usr/local/bin/gitlab-runner
cd ~
gitlab-runner install
gitlab-runner startApple ããŒãã§ãŒã³ã¯ãXcode ãæ§ç¯ããå¿ èŠãããããŒã«ã¢ã¯ã»ã¹ã§ããããã«ãã®ãã¹ãäžã§èšå®ããå¿ èŠããããŸãã ããããã¹ãããæãç°¡åãªæ¹æ³ã¯ããã«ããå®è¡ãããŠãŒã¶ãŒãšããŠãã°ã€ã³ããæåã§ãã«ãããŠã¿ãããšã§ãã ã·ã¹ãã ãããŒãã§ãŒã³ ã¢ã¯ã»ã¹ãèŠæ±ããå Žåã¯ãCI ã®åäœãåžžã«èš±å¯ãããéžæããŸãã æåã®ããã€ãã®ãã€ãã©ã€ã³ã芳å¯ããŠãããŒãã§ãŒã³ãèŠæ±ããªããªã£ãŠããããšã確èªããããšã¯äŸ¡å€ããããããããŸããã åé¡ã¯ãApple ãèªåã¢ãŒãã®äœ¿çšãç°¡åã«ããŠãããªãããšã§ãããäžåºŠäœ¿ãå§ããŠããŸãã°ããã¹ãŠããŸããããŸãã
ãã¡ã¹ãã¬ãŒã³ã®åæå
ãããžã§ã¯ãã§ fastlane ã䜿çšããã«ã¯ã次ã®ã³ãã³ããå®è¡ããŸãã fastlane initã ãã ãã©ããŒããŠãã ãã ãç¹ã«ãã«é¢ããã»ã¯ã·ã§ã³ã§ã¯ã èªååããã CI ãã€ãã©ã€ã³ãéããŠãè¿
éãã€äºæž¬å¯èœãªèµ·åãå¿
èŠãªããã§ãã
ãããžã§ã¯ã ãã£ã¬ã¯ããªã§ã次ã®ã³ãã³ããå®è¡ããŸãã
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane initfastlane ã¯åºæ¬æ§æãèŠæ±ãããããžã§ã¯ãå ã«æ¬¡ã® XNUMX ã€ã®ãã¡ã€ã«ãå«ã fastlane ãã©ã«ããŒãäœæããŸãã
1. fastlane/Appfile
ããã§ã¯è€éãªããšã¯äœããããŸããã Apple ID ãš App ID ãæ£ããããšã確èªããŠãã ããã
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("your-email@your-domain.com") # Your Apple email address2. fastlane/Fastfile
Fastfile ãã«ãã¹ããããå®çŸ©ããŸãã fastlane ã®çµã¿èŸŒã¿æ©èœãå€ã䜿çšããŠãããããããã§ããã¹ãŠãæç¢ºã§ãã èšŒææžãåãåããã¢ã»ã³ããªãå®è¡ããŠãTestFlight ã«ã¢ããããŒããã XNUMX è¡ãäœæããŸãã å¿
èŠã«å¿ããŠããã®ããã»ã¹ãããŸããŸãªã¿ã¹ã¯ã«åå²ã§ããŸãã ããããã¹ãŠã®æäœ (get_certificates, get_provisioning_profile, gym О upload_to_testflight) ã¯ãã§ã« fastlane ã«å«ãŸããŠããŸãã
掻å get_certificates О get_provisioning_profile 眲åã¢ãããŒãã«é¢é£ãã . 䜿çšããŠããå Žå ãŸãã¯äœã§ãã倿Žãå ããŸãã
default_platform(:ios)
platform :ios do
desc "Build the application"
lane :flappybuild do
get_certificates
get_provisioning_profile
gym
upload_to_testflight
end
end3. fastlane/Gymfile
ããã¯ãªãã·ã§ã³ã®ãã¡ã€ã«ã§ãããããã©ã«ãã®åºåãã£ã¬ã¯ããªã倿ŽããåºåãçŸåšã®ãã©ã«ããŒã«é
眮ããããã«æåã§äœæããŸããã ããã«ãã CI ãç°¡çŽ åãããŸãã èå³ãããã°èªãã§ãã ãã gym ãšãã®ãã©ã¡ãŒã¿ .
https://docs.fastlane.tools/actions/gym/ç§ãã¡ã® .gitlab-ci.yml
ããã§ããããžã§ã¯ãã® CI ã©ã³ããŒã宿ãããã€ãã©ã€ã³ããã¹ãããæºåãæŽããŸããã äœãå
¥ã£ãŠãããèŠãŠã¿ãŸããã .gitlab-ci.yml:
stages:
- build
variables:
LC_ALL: "en_US.UTF-8"
LANG: "en_US.UTF-8"
GIT_STRATEGY: clone
build:
stage: build
script:
- bundle install
- bundle exec fastlane flappybuild
artifacts:
paths:
- ./FlappyBird.ipaÐÑеПÑлОÑÐœÐŸïŒ ãæŠç¥ã䜿çšãã clone å®è¡äžã®ããã°ã©ã ã§ shellããã«ãããåã¢ã»ã³ããªã«ã¯ãªãŒã³ãªã¯ãŒã¯ã¹ããŒã¹ã確ä¿ãããåçŽã«åŒã³åºãããšãã§ããŸãã flappybuild äžã§èŠãããã«ããã¡ã¹ãã¬ãŒã³ã ãã®çµæãTestFlight ã§ææ°ã®ã¢ã»ã³ããªã®ã¢ã»ã³ããªã眲åãå±éãååŸããŸãã
ãŸããã¢ãŒãã£ãã¡ã¯ããååŸããã¢ã»ã³ããªãšãšãã«ä¿åããŸãã 圢åŒã«æ³šæããŠãã ãã .ipa 眲åããã ARM å®è¡å¯èœãã¡ã€ã«ã§ãããã·ãã¥ã¬ãŒã¿ã§ã¯å®è¡ãããŸããã ã·ãã¥ã¬ãŒã¿ãŒã®åºåãå¿
èŠãªå Žåã¯ããããçæãããã«ã ã¿ãŒã²ããã远å ããã¢ãŒãã£ãã¡ã¯ã ãã¹ã«å«ããŸãã
ãã®ä»ã®ç°å¢å€æ°
ããã«ã¯ããã¹ãŠãæ©èœãããããã®ç°å¢å€æ°ãããã€ããããŸãã
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD О FASTLANE_SESSION
App Storeã§èªèšŒããŠTestFlightã«ã¢ããããŒãããã«ã¯ãfastlaneã®èªèšŒãå¿ èŠã§ãã ãããè¡ãã«ã¯ãCI ã§äœ¿çšãããã¢ããªã±ãŒã·ã§ã³ã®ãã¹ã¯ãŒããäœæããŸãã 詳现 .
XNUMX èŠçŽ èªèšŒã䜿çšããŠããå Žåã¯ã倿°ãäœæããŸã FASTLANE_SESSION ïŒããã«æç€ºããããŸãïŒã
FASTLANE_USER О FASTLANE_PASSWORD
ãã® èŠæ±ã«å¿ããŠåæåãããã¡ã€ã«ãšèšŒææžãšåŒã°ãã倿°ãèšå®ããå¿
èŠããããŸã FASTLANE_USER О FASTLANE_PASSWORDã 詳现 ã å¥ã®çœ²åæ¹æ³ã䜿çšããŠããå Žåãããã¯å¿
èŠãããŸããã
çµè«
ãã¹ãŠãã©ã®ããã«æ©èœããããèŠãããšãã§ããŸã .
ããã圹ã«ç«ã¡ãGitLab ãããžã§ã¯ãã§ iOS ãã«ããæ±ããã£ããã«ãªã£ãããšãé¡ã£ãŠããŸãã ããã«ããäžã€ãããŸã ãã¡ã¹ãã¬ãŒã³çšã念ã®ããã 䜿ããããããããŸãã CI_BUILD_ID (å¢åãã«ãã®å Žå) .
fastlane ã®ãã XNUMX ã€ã®åªããæ©èœã¯ã App Store ã®å Žåãã»ããã¢ããã¯éåžžã«ç°¡åã§ãã
ã³ã¡ã³ãã§ããªãã®çµéšã«ã€ããŠæããŠãiOS ã¢ããªéçºã®ããã® GitLab ãæ¹åããããã®ã¢ã€ãã¢ãå ±æããŠãã ããã
åºæïŒ habr.com
