แ แแแแ แแแ แแแแแก GitLab fastlane-แแ, แฎแแแก แแฌแแ แก แแ แแฅแแแงแแแแก iOS แแแแแแแชแแแแก App Store-แจแ.
แชแแขแ แฎแแแก แฌแแ แแแฅแแแแ
แแ แฉแแแ แแแแฆแแแ
แ แแแแแแแแ แกแแขแงแแ Apple Store-แแก แแแแคแแแฃแ แแชแแแก แจแแกแแฎแแ
แฉแแแ แแแแแญแแ แแแแ App Store แแแ, แแแกแขแ แแแฃแชแแแก แกแแ แแแคแแแแขแแแ แแ แฃแแ แฃแแแแแงแแคแแก แแ แแคแแแ, แ แแ แงแแแแแคแแ แ แแ แแแแแแแแแ แแแแแแแแจแแ แแ.
แงแแแแแแ แ แแฃแแ แแฅ แแ แแก App Store-แจแ แฎแแแแแฌแแ แแก แฃแคแแแแแแแก แแแงแแแแแ. แแแแแแแแแแ, แ แแ แแฅแแแ แแแแแ แจแแซแแแแ แแแแก แแแ แแแแแแก. แแฃ แแฎแแแ แฎแแ แ, แกแฌแแ แแแแแ แแฃแแแแแก แแแแแฎแกแแแแแ, แแแแ แแ Apple-แแก แกแแ แแแคแแแแขแแแแก แแแ แแแแก แกแแ แแฃแแแแแแ แแฅ แแ แแแกแแฃแแ แแแ แแ แแกแแแ แแฃแแแแแแ แแชแแแแแแแ. แแก แแแกแขแ แแแแแฎแแแ แแแแ แแแฌแงแแแแจแ.
แฒฉแแแ แแแแแแแชแแ
แแฅแแแ แแญแแ แแแแแ แแแแแแแชแแ App Store Connect-แจแ, แ แแแ แแฅแแแแแ ID แแแแคแแแฃแ แแชแแแกแแแแก .xcodebuild
. แแ แแคแแแ แแ แแแแแแแชแแแก ID แแแ แแแแแแแก แแแแแก แแแแแแแแแแก, แคแแกแก แแ แฎแแแแแกแแฌแแแแแแแแก แแ TestFlight แแแแคแแแฃแ แแชแแแก แกแแขแแกแขแ แแแแแแแชแแแแแก แแแแฎแแแ แแแแแแแ แแแกแแแ แชแแแแแแแ. แแ แแแแแแแแ แกแแฏแแ แ แขแแกแขแแ แแแ, แแแ แแแ แขแแกแขแแ แแแ แกแแแแแ แแกแ แแฅแแแแ, แแฃ แแแฅแแ แแชแแ แ แฏแแฃแคแ, แแแ แขแแแ แแแงแแแแแ แแ แแ แแญแแ แแแแแ แแแแแขแแแแแ แแแแแ แแแแแ Apple-แแกแแแ.
แแแแชแแแแแแแชแแแก แแ แแคแแแ
แแแแแแแชแแแก แแแงแแแแแแก แแแ แแ, แแญแแ แแแแแ iOS แแแกแขแ แแแฃแชแแแกแ แแ แแแแแแแแ แแแแก แแแกแแฆแแแแแ, แ แแแแแแแช แจแแฅแแแแแแ Apple Developer Consol-แแก แกแแ แแแคแแแแขแแแแก, แแแแแขแแคแแแแขแแ แแแแกแ แแ แแ แแคแแแแแแก แแแแงแแคแแแแแแจแ. แงแแแแ แแก แกแแ แแแคแแแแขแ แจแแแซแแแแ แแแแ แแแแแแแก แฃแแ แฃแแแแแงแแคแแก แแ แแคแแแจแ.
แแแแฎแแแ แแแแแแก, แ แแแแแแแช แแแแแฌแแแแฃแแแ แแฅแแแแแแ, แฃแแแ แจแแแซแแแ แกแแ แแแคแแแแขแแแแก แจแแฅแแแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แแก แแแแแฏแแแ
แกแฎแแ แแแ แแแแขแ
แแ แแแ แขแแแ แแแแแแแก แแแ แแ, แแ แกแแแแแก แกแแ แแแคแแแแขแแแแก แแ แแ แแคแแแแแแก แแแแคแแแฃแ แแชแแแก แกแฎแแ แแแแแ. แแกแ แ แแ, แแฃ แกแฎแแแแแแ แแ แแฃแจแแแแ, แจแแแซแแแแ แแแแแฌแแแ แแแแแขแแชแแ. แงแแแแแแ แแแแจแแแแแแแแแ แแก แแ แแก, แ แแ แแฅแแแ แแญแแ แแแแแ แแแแคแแแฃแ แแชแแ .xcodebuild
, แ แแแแแแช แแแฃแแแแแแก แแฃแชแแแแแแ แคแแแแแแแ แแ แแแกแแฆแแแแก แฏแแญแแ แฎแแแแแกแแฌแแแแแ แฃแแแ แแงแแก build แแแแแแฃแขแแ แแ แแแแฎแแแ แแแแแกแแแแก, แ แแแแแก แกแแฎแแแแแแช แแแจแแแแฃแแแ runner. แชแแคแ แฃแแ แฎแแแแแฌแแ แแกแแแแก แฉแแแ แแแงแแแแแ fastlane-แก แแ แแฃ แแ แแก แแ แแแแแแแแ แแ แแกแฃแ แ แแแขแ แแชแแแแ, แจแแแแแฌแแแ แแแแ แแแขแแแแแ
แแ แแแแแแแแจแ แแ แแแงแแแแ แแแแแแแแก
GitLab-แแกแ แแ fastlane-แแก แแแแแแแแแ
CI Runner-แแก แแแแแแแแแ
แงแแแแ แแ แแแแแชแแแแก แจแแแ แแแแแแก แจแแแแแ, แฉแแแ แแแแแแแแแแ แ GitLab runner-แแก แแแแคแแแฃแ แแชแแแแ MacOS แแแฌแงแแแแแแแแแ. แกแแแฌแฃแฎแแ แแ, iOS-แแก แแแแแแแชแแแแแก แจแแฅแแแ แแฎแแแแ MacOS-แแ แจแแแแซแแแแ. แแแแ แแ แงแแแแแคแแ แ แจแแแซแแแแ แจแแแชแแแแแก แแ แแฃ แแ แกแคแแ แแจแ แแ แแแ แแกแก แแแแ, แแแแแ แแแแแแแ แแกแแแแก แแ แแแฅแขแแแก
แแแ แแแแแแแก แแแงแแแแแ แซแแแแแ แแแ แขแแแแ. แแแฐแงแแแแ แแแแแแแแ แแแแแก
แฒจแแแแจแแแ. แแแ แแแแแแแ แฃแแแ แแแแแแงแแแแก แจแแกแ แฃแแแแแแ แแ แแแ แแแ shell
. แแก แกแแญแแ แแ macOS-แแ iOS-แแก แแกแแจแแแแแแแ, แ แแแ แแแฃแจแแแก แฃแจแฃแแแแ แ แแแแ แช แแแแฎแแแ แแแแแแ แแ แแ แ แแแแขแแแแแ แแแแก แแแจแแแแแแ. แแฃ แแงแแแแแ shell
, แแจแแแแแแแแ แแ แขแแกแขแแ แแแ แฎแแ แชแแแแแแแ แ แแแแ แช runner แแแแฎแแแ แแแแแ, แแแ แแแแแ build แฐแแกแขแแ. แแก แแ แแ แแก แแกแแแแแ แฃแกแแคแ แแฎแ, แ แแแแ แช แแแแขแแแแแ แแแ, แแแแขแแ แฏแแแแ แแแแแแแแแแ แแ
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-แก แฃแแแ แแแจแแแแก. แแแแก แจแแกแแแแฌแแแแแแ แฃแแแ แขแแแแกแ แแแแ แจแแกแแแ, แ แแแแ แช แแแแฎแแแ แแแแแ, แ แแแแแแช แแแฃแจแแแแก build-แก แแ แจแแแชแแแแ แฎแแแแ แจแแฅแแแแก. แแฃ แกแแกแขแแแ แแแฎแแแก แฌแแแแแแก keychain, แแแ แฉแแแ Always Allow for CI to work. แจแแกแแซแแแ แฆแแ แแแก แจแแกแแแ แแ แแแ แแแแ แแแแกแแแแแแแแก แงแฃแ แแแ, แ แแแ แแแ แฌแแฃแแแแ, แ แแ แแกแแแ แแฆแแ แแแฎแแแแ แกแแแแแซแก. แฃแแแแฃแ แแแ แแก แแ แแก, แ แแ Apple แแ แแแแแแแแแแแก แแแขแแแแขแฃแ แ แ แแแแแแก แแแแแงแแแแแแก, แแแแ แแ แ แแแแ แช แแ แแแก แแแแฌแงแแแ, แงแแแแแคแแ แ แแแ แแแ แแฅแแแแ.
fastlane init
แแ แแแฅแขแจแ fastlane-แแก แแแแแกแแงแแแแแแแ, แแแฃแจแแแ fastlane init
. แฃแแ แแแแ แแแงแแแแ
แแฅแแแแ แแ แแแฅแขแแก แแแ แแฅแขแแ แแแจแ, แแแฃแจแแแ แแก แแ แซแแแแแแแ:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane init
fastlane แแแฎแแแก แซแแ แแแแ แแแแคแแแฃแ แแชแแแก แแ แจแแแแแ แจแแฅแแแแก fastlane แกแแฅแแฆแแแแแก แแ แแแฅแขแจแ แกแแแ แคแแแแแ:
1. fastlane/Appfile
แแฅ แแ แแคแแ แแ แ แแฃแแ. แฃแแ แแแแ แแแ แฌแแฃแแแแ, แ แแ แแฅแแแแ Apple ID แแ App ID แกแฌแแ แแ.
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
) แฃแแแ แจแแแแก 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
end
3. fastlane/Gymfile
แแก แแ แแก แแ แแกแแแแแแแแฃแแ แคแแแแ, แแแแ แแ แแ แจแแแฅแแแแ แแก แฎแแแแ, แ แแแ แจแแแชแแแแ แแแแฃแแแกแฎแแแแ แแแแแแแแแแ แแแ แแฅแขแแ แแ แแ แแแแแแแแกแ แแแแแแแแแแ แแแแแแแแ แ แกแแฅแแฆแแแแแจแ. แแก แแแแ แขแแแแแก CI-แก. แแฃ แแแแแขแแ แแกแแแ, แฌแแแแแแฎแแ gym
แแ แแแกแ แแแ แแแแขแ แแแ
https://docs.fastlane.tools/actions/gym/
Ours .gitlab-ci.yml
แแกแ แ แแ, แฉแแแ แแแงแแแก CI runner แแ แแแฅแขแแกแแแแก แแ แแแแ แแแ แ แแแแแแชแแแแ แแแแกแแแแแ. แแแแฎแแ แ แ แแแแฅแแก .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
fastlane, แ แแแแ แช แแแแแ แฉแแแก. แจแแแแแแ, แฉแแแ แแแฆแแแ แฃแแฎแแแกแ แแกแแแแแแแก แจแแแ แแแแก, แฎแแแแแฌแแ แแก แแ แแแแแแแแแแก TestFlight-แจแ.
แฉแแแ แแกแแแ แแแฆแแแ แแ แขแแคแแฅแขแก แแ แแแแแฎแแแ แแแก แแกแแแแแแแกแแแ แแ แแแ. แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แคแแ แแแขแจแ .ipa
แแ แแก แฎแแแแแฌแแ แแแ ARM แจแแกแ แฃแแแแแแ, แ แแแแแแช แแ แแฃแจแแแแก แกแแแฃแแแขแแ แจแ. แแฃ แแกแฃแ แ แแแแแแแแแแ แกแแแฃแแแขแแ แแกแแแแก, แฃแแ แแแแ แแแแแแขแแ build target, แ แแแแแแช แแฌแแ แแแแแก แแแก แแ แจแแแแแ แฉแแ แแแ แแแ แแ แขแแคแแฅแขแแก แแแแแ.
แกแฎแแ แแแ แแแแก แชแแแแแแแ
แแฅ แแ แแก แแแ แแแแก แ แแแแแแแแ แชแแแแแ, แ แแช แงแแแแแคแแ แก แแแฃแจแแแแแก.
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
ะธ FASTLANE_SESSION
แแแแแแขแแคแแแแชแแ fastlane-แแกแแแแก แกแแญแแ แแ App Store-แจแ แแแแแแขแแคแแแแชแแแกแแแแก แแ TestFlight-แแ แแขแแแ แแแแกแแแแก. แแแแกแแแแแก แจแแฅแแแแแ แแแ แแแ แแแแแแแชแแแกแแแแก, แ แแแแแแช แแแแแงแแแแแฃแแ แแฅแแแแ CI-แจแ. แแแขแแแแแ
แแฃ แแฅแแแ แแแฅแแ แแ แคแแฅแขแแ แแแแ แแแแแแขแแคแแแแชแแ, แจแแฅแแแแแ แชแแแแแ FASTLANE_SESSION
(แแแกแขแ แฃแฅแชแแแแ แแ แกแแแแแก).
FASTLANE_USER
ะธ FASTLANE_PASSWORD
แ แแ FASTLANE_USER
ะธ FASTLANE_PASSWORD
. แแแขแแแแแ
แแแกแแกแ แฃแแก
แแฅแแแ แฎแแแแแ, แ แแแแ แแฃแจแแแแก แแก แงแแแแแคแแ แ
แแแแแ แแแฅแแก, แ แแ แแก แแแแแกแแแแแ แแงแ แแ แจแแแแแแแแแแแแ แแแฃแจแแแ iOS แแแแแแแแแ GitLab แแ แแแฅแขแจแ. แแ แแแแแ แแ แแ CI_BUILD_ID
(แแแแแขแแแแแ แจแแแแแแแแกแแแแก) แ แแ
fastlane-แแก แแแแแ แแ แแ แแแแแ แ แแแแกแแแแ
แแแแแฎแแ แแ แแแแแแขแแ แแแจแ แแฅแแแแ แแแแแชแแแแแแแก แจแแกแแฎแแ แแ แแแแแแแแแ แแ แแฅแแแแ แแแแแแ GitLab-แแก แแแกแแฃแแฏแแแแกแแแแแ iOS แแแแแแแชแแแก แแแแแแแแ แแแแกแแแแก.
แฌแงแแ แ: www.habr.com