ืคืจืกื•ื ืืคืœื™ืงืฆื™ื•ืช iOS ืœ-App Store ืขื GitLab ื•-fastlane

ืคืจืกื•ื ืืคืœื™ืงืฆื™ื•ืช iOS ืœ-App Store ืขื GitLab ื•-fastlane

ื›ื™ืฆื“ GitLab ืขื fastlane ืื•ืกืคืช, ื—ื•ืชืžืช ื•ืžืคืจืกืžืช ื™ื™ืฉื•ืžื™ iOS ืœ-App Store.

ื”ื™ื” ืœื ื• ืœืื—ืจื•ื ื” ืคื•ืกื˜ ืขืœ ืื™ืš ืœื‘ื ื•ืช ื•ืœื”ืคืขื™ืœ ื‘ืžื”ื™ืจื•ืช ืืคืœื™ืงืฆื™ื™ืช ืื ื“ืจื•ืื™ื“ ืขื GitLab ื• ืžืกืœื•ืœ ืžื”ื™ืจ. ื›ืืŸ ื ืจืื” ื›ื™ืฆื“ ืœื‘ื ื•ืช ื•ืœื”ืคืขื™ืœ ืืคืœื™ืงืฆื™ื™ืช iOS ื•ืœืคืจืกื ืื•ืชื” ื‘-TestFlight. ืชืจืื” ื›ืžื” ื–ื” ืžื’ื ื™ื‘ ืื ื™ ืžื‘ืฆืข ืฉื™ื ื•ื™ ื‘-iPad Pro ืขื GitLab Web IDE, ืื ื™ ืœื•ืงื— ืืช ื”ืžื›ืœื•ืœ ื•ืžืงื‘ืœ ืขื“ื›ื•ืŸ ืœื’ืจืกืช ื”ื‘ื“ื™ืงื” ืฉืœ ื”ืืคืœื™ืงืฆื™ื” ื‘ืื•ืชื• iPad Pro ืฉื‘ื• ืคื™ืชื—ืชื™ ืื•ืชื”.

ื›ืืŸ ื ื™ืงื— ืืคืœื™ืงืฆื™ื™ืช iOS ืคืฉื•ื˜ื” ื‘- Swift, ืฉืื™ืชื• ื”ืงืœื˜ืชื™ ืืช ื”ืกืจื˜ื•ืŸ.

ื›ืžื” ืžื™ืœื™ื ืขืœ ืชืฆื•ืจืช Apple Store

ื ืฆื˜ืจืš ืืคืœื™ืงืฆื™ื™ืช App Store, ืื™ืฉื•ืจื™ ื”ืคืฆื” ื•ืคืจื•ืคื™ืœ ืืกืคืงื” โ€‹โ€‹ื›ื“ื™ ืœืงืฉืจ ื”ื›ืœ ื™ื—ื“.

ื”ื“ื‘ืจ ื”ืงืฉื” ื‘ื™ื•ืชืจ ื›ืืŸ ื”ื•ื ื”ื’ื“ืจืช ื–ื›ื•ื™ื•ืช ื—ืชื™ืžื” ื‘-App Store. ืื ื™ ืžืงื•ื•ื” ืฉืืชื” ื™ื›ื•ืœ ืœื”ื‘ื™ืŸ ืืช ื–ื” ื‘ืขืฆืžืš. ืื ืืชื” ื—ื“ืฉ, ืื ื™ ืื›ื•ื•ืŸ ืื•ืชืš ืœื›ื™ื•ื•ืŸ ื”ื ื›ื•ืŸ, ืื‘ืœ ืœื ื ื“ื‘ืจ ื›ืืŸ ืขืœ ื”ืžื•ืจื›ื‘ื•ื™ื•ืช ืฉืœ ื ื™ื”ื•ืœ ืชืขื•ื“ื•ืช ืืคืœ, ื•ื”ืŸ ืžืฉืชื ื•ืช ื›ืœ ื”ื–ืžืŸ. ื”ืคื•ืกื˜ ื”ื–ื” ื™ืขื–ื•ืจ ืœื›ื ืœื”ืชื—ื™ืœ.

ื”ืืคืœื™ืงืฆื™ื•ืช ืฉืœื™

ืืชื” ืฆืจื™ืš ืืคืœื™ืงืฆื™ื” ื‘-App Store Connect ื›ื“ื™ ืฉื™ื”ื™ื” ืœืš ืžื–ื”ื” ืœื”ื’ื“ืจื” .xcodebuild. ื”ืคืจื•ืคื™ืœ ื•ืžื–ื”ื” ื”ืืคืœื™ืงืฆื™ื” ืžืฉืœื‘ื™ื ื‘ื ื™ื™ืช ืงื•ื“, ืชืžื—ื•ืจ ื•ื–ืžื™ื ื•ืช, ื•ืชืฆื•ืจืช TestFlight ืœื”ืคืฆืช ื™ื™ืฉื•ืžื™ ื‘ื“ื™ืงื” ืœืžืฉืชืžืฉื™ื. ืืœ ืชืขืฉื” ื‘ื“ื™ืงื•ืช ืฆื™ื‘ื•ืจื™ื•ืช, ื‘ื“ื™ืงื•ืช ืคืจื˜ื™ื•ืช ื™ืกืคื™ืงื• ืื ื™ืฉ ืœืš ืงื‘ื•ืฆื” ืงื˜ื ื”, ื”ื’ื“ืจื” ืงืœื”, ื•ืœื ืฆืจื™ืš ื”ืจืฉืื•ืช ื ื•ืกืคื•ืช ืžืืคืœ.

ืคืจื•ืคื™ืœ ืืชื—ื•ืœ

ื‘ื ื•ืกืฃ ืœื”ื’ื“ืจืช ื”ืืคืœื™ืงืฆื™ื”, ืืชื” ืฆืจื™ืš ืžืคืชื—ื•ืช ื”ืคืฆื” ื•ืคื™ืชื•ื— ืฉืœ iOS ืฉื ื•ืฆืจื• ื‘ืงื˜ืข ืื™ืฉื•ืจื™ื, ืžื–ื”ื™ื ื•ืคืจื•ืคื™ืœื™ื ืฉืœ ืžืกื•ืฃ ื”ืžืคืชื—ื™ื ืฉืœ Apple. ื ื™ืชืŸ ืœืฉืœื‘ ืืช ื›ืœ ื”ืื™ืฉื•ืจื™ื ื”ืœืœื• ืœืคืจื•ืคื™ืœ ื”ืงืฆืื”.

ืžืฉืชืžืฉื™ื ืฉื™ืื•ืžืชื• ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœื™ืฆื•ืจ ืื™ืฉื•ืจื™ื, ืื—ืจืช ื”ืฉืœื‘ื™ื ืชืขื•ื“ื” ื•ืื ื—ื” ืชืจืื” ืฉื’ื™ืื”.

ืืคืฉืจื•ื™ื•ืช ืื—ืจื•ืช

ืžืœื‘ื“ ื”ืฉื™ื˜ื” ื”ืคืฉื•ื˜ื” ื”ื–ื•, ื™ืฉื ืŸ ื“ืจื›ื™ื ืื—ืจื•ืช ืœื”ื’ื“ื™ืจ ืชืขื•ื“ื•ืช ื•ืคืจื•ืคื™ืœื™ื. ืœื›ืŸ, ืื ืืชื” ืขื•ื‘ื“ ืื—ืจืช, ื™ื™ืชื›ืŸ ืฉืชืฆื˜ืจืš ืœื”ืกืชื’ืœ. ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ื‘ื™ื•ืชืจ ื”ื•ื ืฉืืชื” ืฆืจื™ืš ืชืฆื•ืจื” .xcodebuild, ืฉื™ืฆื‘ื™ืข ืขืœ ื”ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื, ื•ืžื—ื–ื™ืง ื”ืžืคืชื—ื•ืช ื—ื™ื™ื‘ ืœื”ื™ื•ืช ื–ืžื™ืŸ ื‘ืžื—ืฉื‘ ื”-build ืขื‘ื•ืจ ื”ืžืฉืชืžืฉ ืฉืชื—ืช ืฉืžื• ืคื•ืขืœ ื”ืจืฅ. ืขื‘ื•ืจ ื—ืชื™ืžื” ื“ื™ื’ื™ื˜ืœื™ืช ืื ื• ืžืฉืชืžืฉื™ื ื‘-fastlane, ื•ืื ื™ืฉ ื‘ืขื™ื•ืช ืื• ืฉืืชื” ืจื•ืฆื” ืœื“ืขืช ื™ื•ืชืจ, ื‘ื“ื•ืง ืืช ื”ืคืจื˜ื™ื ืฉืœื”ื ืชื™ืขื•ื“ ืขืœ ื—ืชื™ืžื•ืช ื“ื™ื’ื™ื˜ืœื™ื•ืช.

ื‘ื“ื•ื’ืžื” ื–ื• ืื ื™ ืžืฉืชืžืฉ ื‘ื’ื™ืฉื” ืชืขื•ื“ื” ื•ืื ื—ื”, ืื‘ืœ ืœืฉื™ืžื•ืฉ ืืžื™ืชื™ ื–ื” ื›ื ืจืื” ืžืชืื™ื ื™ื•ืชืจ ืœื”ืชืื™ื.

ื”ื›ื ืช GitLab ื•-fastlane

ื”ื›ื ืช CI Runner

ืœืื—ืจ ืฉืืกืคื ื• ืืช ื›ืœ ื”ื ืชื•ื ื™ื ื”ืœืœื•, ืื ื• ืขื•ื‘ืจื™ื ืœืชืฆื•ืจื” ืฉืœ ื”ืจืฅ GitLab ื‘ืžื›ืฉื™ืจ ื”-MacOS. ืœืžืจื‘ื” ื”ืฆืขืจ, ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืืคืœื™ืงืฆื™ื•ืช iOS ืจืง ื‘-MacOS. ืื‘ืœ ื”ื›ืœ ื™ื›ื•ืœ ืœื”ืฉืชื ื•ืช, ื•ืื ืืชื ืžืฆืคื™ื ืœื”ืชืงื“ืžื•ืช ื‘ืชื—ื•ื ื”ื–ื”, ืฉื™ืžื• ืขื™ืŸ ืขืœ ืคืจื•ื™ืงื˜ื™ื ื›ืžื• xcbuild ะธ ืกึดื™ืžึธืŸ, ื•ื”ืžืฉื™ืžื” ื”ืคื ื™ืžื™ืช ืฉืœื ื• gitlab-ce#57576.

ื”ื’ื“ืจืช ื”ืจืฅ ื”ื™ื ืคืฉื•ื˜ื” ืžืื•ื“. ืขืงื•ื‘ ืื—ืจ ื”ื ื•ื›ื—ื™ ื”ื•ืจืื•ืช ืœื”ื’ื“ืจืช GitLab Runner ื‘-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 start

Apple Keychain ื—ื™ื™ื‘ ืœื”ื™ื•ืช ืžื•ื’ื“ืจ ื‘ืžืืจื— ื–ื” ืขื ื’ื™ืฉื” ืœืžืคืชื—ื•ืช ืฉ-Xcode ืฆืจื™ืš ืœื‘ื ื•ืช. ื”ื“ืจืš ื”ืงืœื” ื‘ื™ื•ืชืจ ืœื‘ื“ื•ืง ื–ืืช ื”ื™ื ืœื”ื™ื›ื ืก ื‘ืชื•ืจ ื”ืžืฉืชืžืฉ ืฉื™ืจื™ืฅ ืืช ื”-build ื•ืœื ืกื•ืช ืœื‘ื ื•ืช ืื•ืชื• ื‘ืื•ืคืŸ ื™ื“ื ื™. ืื ื”ืžืขืจื›ืช ืžื‘ืงืฉืช ื’ื™ืฉื” ืœืžื—ื–ื™ืง ืžืคืชื—ื•ืช, ื‘ื—ืจ Always Allow for CI to work. ืื•ืœื™ ืฉื•ื•ื” ืœื”ื™ื›ื ืก ื•ืœืฆืคื•ืช ื‘ืฉื ื™ ื”ืฆื™ื ื•ืจื•ืช ื”ืจืืฉื•ื ื™ื ื›ื“ื™ ืœื•ื•ื“ื ืฉื”ื ืœื ืžื‘ืงืฉื™ื ื™ื•ืชืจ ืืช ืžื—ื–ื™ืง ื”ืžืคืชื—ื•ืช. ื”ืฆืจื” ื”ื™ื ืฉืืคืœ ืœื ืžืงืœื” ืขืœื™ื ื• ืœื”ืฉืชืžืฉ ื‘ืžืฆื‘ ืื•ื˜ื•ืžื˜ื™, ืื‘ืœ ื‘ืจื’ืข ืฉืชืชื—ื™ืœ, ื”ื›ืœ ื™ื”ื™ื” ื‘ืกื“ืจ.

init ืžื”ื™ืจ

ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘-fastlane ื‘ืคืจื•ื™ืงื˜, ื”ืคืขืœ fastlane init. ืจืง ืชืขืงื•ื‘ ื”ื•ืจืื•ืช ืœื”ืชืงื ื” ื•ื”ืจืฆื” ืฉืœ Fastlane, ื‘ืžื™ื•ื—ื“ ื‘ืงื˜ืข ืขืœ ืงื•ื‘ืฅ Gem, ื›ื™ ืื ื—ื ื• ืฆืจื™ื›ื™ื ื”ืฉืงื” ืžื”ื™ืจื” ื•ืฆืคื•ื™ื” ื“ืจืš ืฆื™ื ื•ืจ CI ืื•ื˜ื•ืžื˜ื™.

ื‘ืกืคืจื™ื™ืช ื”ืคืจื•ื™ืงื˜ ืฉืœืš, ื”ืคืขืœ ืืช ื”ืคืงื•ื“ื•ืช ื”ื‘ืื•ืช:

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_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/

ืฉืœื ื• .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

ะ’ัะต ะพั‚ะปะธั‡ะฝะพ! ื”ื’ื“ืจื ื• ืืช ื”ืคื•ืจืžื˜ ืœ-UTF-8 ืขื‘ื•ืจ fastlane ืœืคื™ ื”ืฆื•ืจืš, ื”ืฉืชืžืฉ ื‘ืืกื˜ืจื˜ื’ื™ื” clone ืขื ืชื•ื›ื ื™ืช ื”ืคืขืœื” shell, ื›ื“ื™ ืฉื™ื”ื™ื” ืœื ื• ืžืงื•ื ืขื‘ื•ื“ื” ื ืงื™ ืœื›ืœ ื”ืจื›ื‘ื”, ื•ืคืฉื•ื˜ ืžืชืงืฉืจื™ื flappybuild fastlane, ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืœืขื™ืœ. ื›ืชื•ืฆืื” ืžื›ืš, ืื ื• ืžืงื‘ืœื™ื ืืช ื”ื”ืจื›ื‘ื”, ื”ื—ืชื™ืžื” ื•ื”ืคืจื™ืกื” ืฉืœ ื”ื”ืจื›ื‘ื” ื”ืขื“ื›ื ื™ืช ื‘ื™ื•ืชืจ ื‘-TestFlight.

ืื ื—ื ื• ื’ื ืžืงื‘ืœื™ื ืืช ื”ื—ืคืฅ ื•ืฉื•ืžืจื™ื ืื•ืชื• ืขื ื”ื”ืจื›ื‘ื”. ืฉื™ืžื• ืœื‘ ืฉื”ืคื•ืจืžื˜ .ipa ื”ื•ื ืงื•ื‘ืฅ ื”ืคืขืœื” ื—ืชื•ื ืฉืœ ARM ืฉืื™ื ื• ืคื•ืขืœ ื‘ืกื™ืžื•ืœื˜ื•ืจ. ืื ืืชื” ืจื•ืฆื” ืคืœื˜ ืขื‘ื•ืจ ื”ืกื™ืžื•ืœื˜ื•ืจ, ืคืฉื•ื˜ ื”ื•ืกืฃ ืืช ื™ืขื“ ื”ื‘ื ื™ื™ื” ืฉืžื™ื™ืฆืจ ืื•ืชื•, ื•ืœืื—ืจ ืžื›ืŸ ื›ืœื•ืœ ืื•ืชื• ื‘ื ืชื™ื‘ ื”ื—ืคืฅ.

ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ืื—ืจื™ื

ื™ืฉ ื›ืืŸ ื›ืžื” ืžืฉืชื ื™ ืกื‘ื™ื‘ื” ืฉื’ื•ืจืžื™ื ืœื”ื›ืœ ืœืขื‘ื•ื“.

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 ืขื‘ื•ืจ fastlane, ืœื™ืชืจ ื‘ื™ื˜ื—ื•ืŸ. ืื•ืœื™ ืชืจืฆื” ืœื”ืฉืชืžืฉ CI_BUILD_ID (ืขื‘ื•ืจ ื‘ื ื™ื™ื” ืžืฆื˜ื‘ืจืช) ืœ ื”ื’ื“ืœื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ื’ืจืกื”.

ืชื›ื•ื ื” ืžื’ื ื™ื‘ื” ื ื•ืกืคืช ืฉืœ fastlane ื”ื™ื ืฆื™ืœื•ืžื™ ืžืกืš ืื•ื˜ื•ืžื˜ื™ื™ื ืขื‘ื•ืจ App Store, ืฉืงืœ ืžืื•ื“ ืœื”ื’ื“ื™ืจ.

ืกืคืจ ืœื ื• ื‘ืชื’ื•ื‘ื•ืช ืขืœ ื”ื—ื•ื•ื™ื” ืฉืœืš ื•ืฉืชืฃ ืืช ื”ืจืขื™ื•ื ื•ืช ืฉืœืš ืœืฉื™ืคื•ืจ GitLab ืœืคื™ืชื•ื— ืืคืœื™ืงืฆื™ื•ืช ืœ-iOS.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”