ืืื GitLab ืืื ืคืึทืกืืืึทื ืข ืงืึทืืขืงืฅ, ืฆืืืื ืืื ืคึผืึทืืืืฉืึทื ืืึธืก ืึทืคึผืืึทืงืืืฉืึทื ื ืฆื ืื ืึทืคึผ ืกืืึธืจ.
ืืืจ ืืขืฆืื ืก ืืื
ืืึธ ืืืจ ืืืขืื ื ืขืืขื
ืขืืืขืืข ืืืขืจืืขืจ ืืืขืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ืขืคึผื ืกืืึธืจ
ืืืจ ืืึทืจืคึฟื ืึทื ืึทืคึผ ืกืืึธืจ ืึทืคึผ, ืคืึทืจืฉืคึผืจืืืืื ื ืกืขืจืืืคืืงืึทืฅ ืืื ืึท ืคึผืจืึทืืืืืฉืึทื ื ืคึผืจืึธืคืื ืฆื ืืื ืื ืึทืืฅ ืฆืืืึทืืขื.
ืื ืืขืจืกื ืฉืืืขืจ ืืึทื ืืึธ ืืื ืืึทืฉืืขืืืงื ืกืืื ืื ื ืจืขืื ืืื ืื ืึทืคึผ ืกืืึธืจ. ืืื ืืึธืคึฟื ืืืจ ืงืขื ืขื ืืขืคึฟืื ืขื ืืึธืก ืคึฟืึทืจ ืืื. ืืืื ืืืจ ืืขื ื ื ืืึท, ืืื ืืืขื ืืืืึทืื ืืืจ ืืื ืื ืจืขืื ืจืืืืื ื, ืึธืืขืจ ืืืจ ืืืขืื ื ืืฉื ืจืขืื ืืืขืื ืื ืื ืืจืึทืงืึทืกืื ืคืื ืึธื ืคืืจืื ื ืขืคึผื ืกืขืจืืืคืืงืึทืฅ ืืึธ, ืืื ืืื ืืขื ืขื ืงืขืกืืืืขืจ ืืฉืึทื ืืื ื. ืืขื ืคึผืึธืกืื ืืืขื ืืขืืคื ืืืจ ืืึทืงืืืขื ืกืืึทืจืืขื.
ืืืึทื ืึทืคึผืคึผืก
ืืืจ ืืึทืจืคึฟื ืึท ืึทืคึผ ืืื ืึทืคึผ ืกืืึธืจ ืงืึธื ื ืขืงื ืึทืืื ืืืจ ืืึธืื ืึท ืฉืืึทื ืคึฟืึทืจ ืงืึทื ืคืืืืขืจืืืฉืึทื .xcodebuild
. ืื ืคึผืจืึธืคืื ืืื ืึทืคึผืืึทืงืืืฉืึทื ืฉืืึทื ืคืึทืจืืื ืื ืงืึธื ืืืืขื, ืคึผืจืืืกืื ื ืืื ืึทืืืืืืึทืืืืึทืื, ืืื TestFlight ืงืึทื ืคืืืืขืจืืืฉืึทื ืคึฟืึทืจ ืืืกืืจืืืืืืื ื ืคึผืจืืืืจื ืึทืคึผืืึทืงืืืฉืึทื ื ืฆื ืืืืขืจื. ืืึธื ื ืื ืืึธื ืขืคื ืืืขื ืืขืกืืื ื, ืคึผืจืืืืึทื ืืขืกืืื ื ืืืขื ืืืื ืืขื ืื ืืืื ืืืจ ืืึธืื ืึท ืงืืืื ืืจืืคึผืข, ืืจืื ื ืกืขืืึทืคึผ ืืื ืืึธื ื ืื ืืึทืจืคึฟื ื ืึธื ืคึผืขืจืืืฉืึทื ื ืคืื ืขืคึผื.
ืื ืืืืึทืืืืึทืืืึธื ืคึผืจืึธืคืื
ืืื ืึทืืืฉืึทื ืฆื ืื ืึทืคึผ ืกืขืืึทืคึผ, ืืืจ ืืึทืจืคึฟื ืืึธืก ืคืึทืจืฉืคึผืจืืืืื ื ืืื ืึทื ืืืืืงืืื ื ืฉืืืกืืขื ืืืฉืืคื ืืื ืื ืกืขืจืืืคืืงืึทืฅ, ืืืขื ืืืคืืขืจืก & ืคึผืจืึธืืคืืืื ืึธืคึผืืืืืื ื ืคืื ืื ืขืคึผื ืืขืืืขืืึธืคึผืขืจ ืงืึทื ืกืึธืื. ืึทืืข ืื ืกืขืจืืืคืืงืึทืฅ ืงืขื ืขื ืืืื ืงืึทืืืืื ื ืืื ืึท ืคึผืจืึทืืืืืฉืึทื ื ืคึผืจืึธืคืื.
ืืืืขืจื ืืืึธืก ืืืขื ืืืื ืึธืืขื ืืึทืงืืืืึทื ืืึทืจืคึฟื ืฆื ืงืขื ืขื ืฆื ืฉืึทืคึฟื ืกืขืจืืืคืืงืึทืฅ, ืึทื ืืขืจืฉ ืื ืกืืขืคึผืก
ืื ืืขืจืข ืึธืคึผืฆืืขืก
ืืืฅ ืืขื ืคึผืฉืื ืืืคึฟื, ืขืก ืืขื ืขื ืื ืืขืจืข ืืืขืื ืฆื ืงืึทื ืคืืืืขืจ ืกืขืจืืืคืืงืึทืฅ ืืื ืคึผืจืึธืืคืืืื. ืึทืืื, ืืืื ืืืจ ืึทืจืืขื ืืืคืขืจืขื ืืื, ืืืจ ืงืขื ืืึธืื ืฆื ืึทืืึทืคึผื. ืื ืืขืจืกื ืืืืืืืง ืืึทื ืืื ืึทื ืืืจ ืืึทืจืคึฟื ืงืึทื ืคืืืืขืจืืืฉืึทื .xcodebuild
, ืืืึธืก ืืืขื ืคืื ื ืฆื ืื ื ืืืืืง ืืขืงืขืก, ืืื ืื ืงืืืืฉืึทืื ืืืื ืืืื ืื ืืืฆื ืืืืฃ ืื ืืืืขื ืงืึธืืคึผืืืืขืจ ืคึฟืึทืจ ืื ืืึทื ืืฆืขืจ ืืื ืืขืจ ืืืขืืขื ืก ื ืึธืืขื ืืขืจ ืจืึทื ืขืจ ืืื ืคืืืกื ืืืง. ืคึฟืึทืจ ืืืืืืึทื ืืกืืืข ืืืจ ื ืืฆื ืคืึทืกืืืึทื ืข, ืืื ืืืื ืขืก ืืขื ืขื ืคึผืจืึธืืืขืืก ืึธืืขืจ ืืืจ ืืืืื ืฆื ืืืืกื ืืขืจ, ืืฉืขืง ืืืืก ืืืืขืจ ืืขืืึทืืืก
ืืื ืืขื ืืืึทืฉืคึผืื ืืื ื ืืฆื ืืขื ืฆืืืึทื ื
ืคึผืจืืคึผืขืจืื ื GitLab ืืื ืคืึทืกืืืึทื ืข
ืคึผืจืืคึผืขืจืื ื ืกื ืจืึทื ืขืจ
ื ืึธื ืืขืืืืื ืึทืืข ืื ืืึทืื, ืืืจ ืืึทื ืืืืฃ ืฆื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืคืื ืื GitLab ืจืึทื ืขืจ ืืืืฃ ืื MacOS ืืืื. ืฆืื ืืึทืืืืขืจื, ืืืจ ืงืขื ืขื ืืืืื ืืึทืื ืืึธืก ืึทืคึผืคึผืก ืืืืฃ ืืึทืงืึธืก. ืึธืืขืจ ืึทืืฅ ืงืขื ืืืืฉื, ืืื ืืืื ืืืจ ืืขืจืืืึทืจืื ืคึผืจืึธืืจืขืก ืืื ืืขื ืืขืื ื, ืืึทืืื ืึทื ืืืื ืืืืฃ ืคึผืจืึทืืืฉืขืงืก ืืื
ืืึทืฉืืขืืืงื ืื ืืืืคืขืจ ืืื ืืืืขืจ ืคึผืฉืื. ืืื ืงืจืึทื ื
ื ืืืืฅ. ืืขืจ ืืืืคืขืจ ืืืื ื ืืฆื ืึท ืขืงืกืขืงืืืึทืืืข ืคึผืจืึธืืจืึทื shell
. ืืึธืก ืืื ืคืืจืืื ืื ืฆื ืืืืขื ืืึธืก ืืืืฃ ืืึทืงืึธืก ืฆื ืึทืจืืขืื ืืืืึทื ืืื ืึท ืืึทื ืืฆืขืจ ืืื ืืื ืืืจื ืงืึทื ืืืื ืขืจื. ืืืื ืืืจ ื ืืฆื 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 start
Apple Keychain ืืืื ืืืื ืงืึทื ืคืืืืขืจื ืืืืฃ ืืขื ืืึทืืขืืึธืก ืืื ืึทืงืกืขืก ืฆื ืื ืฉืืืกืืขื ืืืึธืก Xcode ืืึทืจืฃ ืฆื ืืืืขื. ืื ืืืืึทืกื ืืืขื ืฆื ืคึผืจืืืืจื ืืึธืก ืืื ืฆื ืงืืึธืฅ ืืื ืืื ืืขืจ ืืึทื ืืฆืขืจ ืืืึธืก ืืืขื ืืืืคื ืื ืืืืขื ืืื ืคึผืจืืืืจื ืฆื ืืืืขื ืขืก ืืึทื ืืืึทืื. ืืืื ืื ืกืืกืืขื ืคืจืขืื ืคึฟืึทืจ ืึทืงืกืขืก ืฆื ืฉืืืกืืขื, ืกืขืืขืงืืืจื ืฉืืขื ืืืง ืืึธืื CI ืฆื ืึทืจืืขืื. ืขืก ืงืขื ืืืื ืืืขืจื ืฆื ืืืื ืืื ืืื ืืืึทืืฉืื ื ืื ืขืจืฉืืขืจ ืคึผืึธืจ ืคืื ืคึผืืืคึผืืืื ื ืฆื ืืึทืื ืืืืขืจ ืึทื ืืื ืืึธื ื ืื ืคืจืขืื ืคึฟืึทืจ ืื ืงืืืืฉืึทืื ืขื ืืืึธืจ. ืื ืฆืจื ืืื ืึทื ืขืคึผื ืืืื ืขืก ื ืืฉื ืืจืื ื ืคึฟืึทืจ ืืื ืื ืฆื ื ืืฆื ืึทืืืึธ ืืึธืืข, ืึธืืขืจ ืึทืืึธื ืืืจ ืืึทืงืืืขื ืขืก, ืึทืืฅ ืืืขื ืืืื ืืื.
fastlane init
ืฆื ื ืืฆื ืคืึทืกืืืึทื ืข ืืื ืึท ืคึผืจืืืขืงื, ืืืืคื fastlane init
. ื ืึธืจ ื ืึธืืคืึธืืื
ืืื ืืืื ืคึผืจืืืขืงื ืืืขืืืืืึทืืขืจ, ืืืืคื ืื ืงืึทืืึทื ืื:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
fastlane ืืืขื ืืขืื ืึท ืืงืขืจืืืง ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืฉืึทืคึฟื ืึท ืคืึทืกืืืึทื ืข ืืขืงืข ืืื ืื ืคึผืจืืืขืงื ืืื ืืจืื ืืขืงืขืก:
1. fastlane/Appfile
ืขืก ืืื ืืึธืจื ืืฉื ืงืึธืืคึผืืืฆืืจื ืืึธ. ื ืึธืจ ืืึทืื ืืืืขืจ ืืืื ืขืคึผื ืฉืืึทื ืืื ืึทืคึผ ืฉืืึทื ืืขื ืขื ืจืืืืืง.
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("[email protected]") # Your Apple email address
2. fastlane/Fastfile
Fastfile
ืืืคืืื ื ืื ืืืืขื ืกืืขืคึผืก. ืืืจ ื ืืฆื ืึท ืคึผืืึทืฅ ืคืื ืื ืืขืืืื-ืืื ืคึฟืขืึดืงืืืื ืคืื Fastlane, ืึทืืื ืึทืืฅ ืืื ืงืืึธืจ ืืืื ืืึธ. ืืืจ ืืึทืื ืืืื ืฉืืจื ืืืึธืก ื ืขืื ืกืขืจืืืคืืงืึทืฅ, ืคึผืขืจืคืึธืจืื ืื ืคึฟืึทืจืืึทืืืื ื ืืื ืืคึผืืึธืึทืืขื ืขืก ืฆื TestFlight. ืืืจ ืงืขื ืขื ืืืืื ืืขื ืคึผืจืึธืฆืขืก ืืื ืคืึทืจืฉืืืขื ืข ืืึทืกืงืก ืืืื ื ืืืืืง. ืึทืืข ืื ืึทืคึผืขืจืืืฉืึทื ื (get_certificates
, get_provisioning_profile
, gym
ะธ upload_to_testflight
) ืืขื ืขื ืฉืืื ืึทืจืืึทื ืืขืจืขืื ื ืืื ืคืึทืกืืืึทื ืข.
ืืขืืืงืืื 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
end
3. fastlane/Gymfile
ืืึธืก ืืื ืึทื ืึทืคึผืฉืึทื ืึทื ืืขืงืข, ืึธืืขืจ ืืื ืืืฉืืคื ืขืก ืืึทื ืืืึทืื ืฆื ืืืืฉื ืื ืคืขืืืงืืึทื ืจืขืืืืืึทื ืืืขืืืืืึทืืขืจ ืืื ืฉืืขืื ืื ืจืขืืืืืึทื ืืื ืื ืงืจืึทื ื ืืขืงืข. ืืึธืก ืกืืืคึผืืึทืคืืื ืกื. ืืืื ืืื ืืขืจืขืกืืจื, ืืืืขื ืขื ืืืขืื 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
ืึธืืขื ืืึทืงืืืฉืึทื ืคึฟืึทืจ ืคืึทืกืืืึทื ืข ืืื ืคืืจืืื ืื ืฆื ืึธืืขื ืืึทืงืืื ืืื ืื ืึทืคึผ ืกืืึธืจ ืืื ืฆืืคึฟืขืืืงืขืจ ืฆื TestFlight. ืฆื ืืึธื ืืึธืก, ืฉืึทืคึฟื ืึท ืคึผืึทืจืึธื ืคึฟืึทืจ ืื ืึทืคึผืืึทืงืืืฉืึทื ืืืึธืก ืืืขื ืืืื ืืขืืืืื ื ืืื CI. ืืขืืึทืืืก
ืืืื ืืืจ ืืึธืื ืฆืืืื-ืคืึทืงืืึธืจ ืึธืืขื ืืึทืงืืืฉืึทื, ืฉืึทืคึฟื ืึท ืืืึทืืขืืืืืง FASTLANE_SESSION
(ืืื ืกืืจืืงืฆืืขืก ืืึธืจื).
FASTLANE_USER
ะธ FASTLANE_PASSWORD
ืึทื FASTLANE_USER
ะธ FASTLANE_PASSWORD
. ืืขืืึทืืืก
ืืื ืืกืงื ื
ืืืจ ืงืขื ืขื ืืขื ืืื ืขืก ืึทืืข ืึทืจืืขื
ืืื ืืึธืคึฟื ืืึธืก ืืื ืืขืืืขื ื ืืฆืืง ืืื ืื ืกืคึผืืืขืจื ืืืจ ืฆื ืึทืจืืขืื ืืื ืืึธืก ืืืืขื ืืื ืึท GitLab ืคึผืจืืืขืงื. ืืึธ ืก ืื ืืขืจื CI_BUILD_ID
(ืคึฟืึทืจ ืื ืงืจืึทืืขื ืืึทื ืืืืขื) ืฆื
ืื ืื ืืขืจ ืงืื ืฉืืจืื ืคืื ืคืึทืกืืืึทื ืข ืืื
ืืขืจืฆืืืื ืืื ืื ืืื ืื ืืึทืืขืจืงืื ืืขื ืืืขืื ืืืื ืืขืจืคืึทืจืื ื ืืื ืืืืื ืืืื ืืขืืื ืงืขื ืคึฟืึทืจ ืืืคึผืจืืืืื ื GitLab ืคึฟืึทืจ ืืึธืก ืึทืคึผ ืึทื ืืืืืงืืื ื.
ืืงืืจ: www.habr.com