ืืจื•ื™ืกื’ืขื‘ืŸ ื™ืึธืก ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ื“ื™ ืึทืคึผ ืกื˜ืึธืจ ืžื™ื˜ GitLab ืื•ืŸ Fastlane

ืืจื•ื™ืกื’ืขื‘ืŸ ื™ืึธืก ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ื“ื™ ืึทืคึผ ืกื˜ืึธืจ ืžื™ื˜ GitLab ืื•ืŸ Fastlane

ื•ื•ื™ GitLab ืžื™ื˜ ืคืึทืกื˜ืœืึทื ืข ืงืึทืœืขืงืฅ, ืฆื™ื™ื›ืŸ ืื•ืŸ ืคึผืึทื‘ืœื™ืฉืึทื– ื™ืึธืก ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ื“ื™ ืึทืคึผ ืกื˜ืึธืจ.

ืžื™ืจ ืœืขืฆื˜ื ืก ื”ืื˜ ืคึผืึธืกื˜ืŸ ื•ื•ืขื’ืŸ ื•ื•ื™ ืฆื• ื’ืขืฉื•ื•ื™ื ื“ ื‘ื•ื™ืขืŸ ืื•ืŸ ืœื•ื™ืคืŸ ืึทืŸ ืึทื ื“ืจื•ื™ื“ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ื˜ GitLab ืื•ืŸ ืฉื ืขืœืข ืœื™ื ื™ืข. ื“ืึธ ืžื™ืจ ื•ื•ืขืœืŸ ื–ืขืŸ ื•ื•ื™ ืฆื• ื‘ื•ื™ืขืŸ ืื•ืŸ ืœื•ื™ืคืŸ ืึทืŸ ื™ืึธืก ืึทืคึผ ืื•ืŸ ืึทืจื•ื™ืกื’ืขื‘ืŸ ืขืก ืฆื• TestFlight. ืงื•ืง ื•ื•ื™ ืงื™ืœ ืขืก ืื™ื– ืื™ืš ืžืึทื›ืŸ ืึท ืขื ื“ืขืจื•ื ื’ ืื•ื™ืฃ ืึทืŸ iPad Pro ืžื™ื˜ GitLab ื•ื•ืขื‘ IDE, ืื™ืš ื ืขืžืขืŸ ื“ื™ ืคึฟืึทืจื–ืึทืžืœื•ื ื’ ืื•ืŸ ื‘ืึทืงื•ืžืขืŸ ืึท ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืฆื• ื“ื™ ืคึผืจืึธื‘ืข ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื“ืขืจ ื–ืขืœื‘ื™ืงืขืจ iPad Pro ื•ื•ื• ืื™ืš ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืขืก.

ื“ืึธ ืžื™ืจ ื•ื•ืขืœืŸ ื ืขืžืขืŸ ืคึผืฉื•ื˜ ื™ืึธืก ืึทืคึผ ืื•ื™ืฃ ืกื•ื•ื™ืคื˜, ืžื™ื˜ ื•ื•ืขืžืขืŸ ืื™ืš ืจืขืงืึธืจื“ืขื“ ื“ื™ ื•ื•ื™ื“ืขื.

ืขื˜ืœืขื›ืข ื•ื•ืขืจื˜ืขืจ ื•ื•ืขื’ืŸ ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ืขืคึผืœ ืกื˜ืึธืจ

ืžื™ืจ ื“ืึทืจืคึฟืŸ ืึทืŸ ืึทืคึผ ืกื˜ืึธืจ ืึทืคึผ, ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืื•ืŸ ืึท ืคึผืจืึทื•ื•ื™ื–ืฉืึทื ื– ืคึผืจืึธืคื™ืœ ืฆื• ื‘ื™ื ื“ืŸ ืึทืœืฅ ืฆื•ื–ืึทืžืขืŸ.

ื“ื™ ืžืขืจืกื˜ ืฉื•ื•ืขืจ ื–ืึทืš ื“ืึธ ืื™ื– ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืกื™ื™ื ื™ื ื’ ืจืขื›ื˜ ืื™ืŸ ื“ื™ ืึทืคึผ ืกื˜ืึธืจ. ืื™ืš ื”ืึธืคึฟืŸ ืื™ืจ ืงืขื ืขืŸ ื’ืขืคึฟื™ื ืขืŸ ื“ืึธืก ืคึฟืึทืจ ื–ื™ืš. ืื•ื™ื‘ ืื™ืจ ื–ืขื ื˜ ื ื™ื™ึท, ืื™ืš ื•ื•ืขื˜ ื•ื•ื™ื™ึทื–ืŸ ืื™ืจ ืื™ืŸ ื“ื™ ืจืขื›ื˜ ืจื™ื›ื˜ื•ื ื’, ืึธื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื“ื™ ื™ื ื˜ืจืึทืงืึทืกื™ื– ืคื•ืŸ ืึธื ืคื™ืจื•ื ื’ ืขืคึผืœ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ื“ืึธ, ืื•ืŸ ื–ื™ื™ ื–ืขื ืขืŸ ืงืขืกื™ื™ื“ืขืจ ื˜ืฉืึทื ื’ื™ื ื’. ื“ืขื ืคึผืึธืกื˜ืŸ ื•ื•ืขื˜ ื”ืขืœืคืŸ ืื™ืจ ื‘ืึทืงื•ืžืขืŸ ืกื˜ืึทืจื˜ืขื“.

ืžื™ื™ึทืŸ ืึทืคึผืคึผืก

ืื™ืจ ื“ืึทืจืคึฟืŸ ืึท ืึทืคึผ ืื™ืŸ ืึทืคึผ ืกื˜ืึธืจ ืงืึธื ื ืขืงื˜ ืึทื–ื•ื™ ืื™ืจ ื”ืึธื‘ืŸ ืึท ืฉื™ื™ึทืŸ ืคึฟืึทืจ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ .xcodebuild. ื“ื™ ืคึผืจืึธืคื™ืœ ืื•ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืฉื™ื™ึทืŸ ืคืึทืจื‘ื™ื ื“ืŸ ืงืึธื“ ื‘ื•ื™ืขืŸ, ืคึผืจื™ื™ืกื™ื ื’ ืื•ืŸ ืึทื•ื•ื™ื™ืœืึทื‘ื™ืœืึทื˜ื™, ืื•ืŸ TestFlight ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคึฟืึทืจ ื“ื™ืกื˜ืจื™ื‘ื™ื•ื˜ื™ื ื’ ืคึผืจื•ื‘ื™ืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืฆื• ื™ื•ื–ืขืจื–. ื˜ืึธืŸ ื ื™ื˜ ื˜ืึธืŸ ืขืคื ื˜ืœืขืš ื˜ืขืกื˜ื™ื ื’, ืคึผืจื™ื•ื•ืึทื˜ ื˜ืขืกื˜ื™ื ื’ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’ ืื•ื™ื‘ ืื™ืจ ื”ืึธื‘ืŸ ืึท ืงืœื™ื™ืŸ ื’ืจื•ืคึผืข, ื’ืจื™ื ื’ ืกืขื˜ืึทืคึผ ืื•ืŸ ื˜ืึธืŸ ื ื™ื˜ ื“ืึทืจืคึฟืŸ ื ืึธืš ืคึผืขืจืžื™ืฉืึทื ื– ืคื•ืŸ ืขืคึผืœ.

ื™ื ื™ื˜ื™ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ืคึผืจืึธืคื™ืœ

ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืฆื• ื“ื™ ืึทืคึผ ืกืขื˜ืึทืคึผ, ืื™ืจ ื“ืึทืจืคึฟืŸ ื™ืึธืก ืคืึทืจืฉืคึผืจื™ื™ื˜ื•ื ื’ ืื•ืŸ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืฉืœื™ืกืœืขืŸ ื‘ืืฉืืคืŸ ืื™ืŸ ื“ื™ ืกืขืจื˜ื™ืคื™ืงืึทืฅ, ื™ื“ืขื ื˜ื™ืคื™ืขืจืก & ืคึผืจืึธื•ืคื™ื™ืœื– ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคื•ืŸ ื“ื™ ืขืคึผืœ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืงืึทื ืกืึธื•ืœ. ืึทืœืข ื“ื™ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืงืขื ืขืŸ ื–ื™ื™ืŸ ืงืึทืžื‘ื™ื™ื ื“ ืื™ืŸ ืึท ืคึผืจืึทื•ื•ื™ื–ืฉืึทื ื– ืคึผืจืึธืคื™ืœ.

ื™ื•ื–ืขืจื– ื•ื•ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึธื˜ืขื ื˜ืึทืงื™ื™ื˜ืึทื“ ื“ืึทืจืคึฟืŸ ืฆื• ืงืขื ืขืŸ ืฆื• ืฉืึทืคึฟืŸ ืกืขืจื˜ื™ืคื™ืงืึทืฅ, ืึทื ื“ืขืจืฉ ื“ื™ ืกื˜ืขืคึผืก ืกืขืจื˜ ืื•ืŸ ื–ื™ืคืฅ ืื™ืจ ื•ื•ืขื˜ ื–ืขืŸ ืึท ื˜ืขื•ืช.

ืื ื“ืขืจืข ืึธืคึผืฆื™ืขืก

ื—ื•ืฅ ื“ืขื ืคึผืฉื•ื˜ ืื•ืคึฟืŸ, ืขืก ื–ืขื ืขืŸ ืื ื“ืขืจืข ื•ื•ืขื’ืŸ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืกืขืจื˜ื™ืคื™ืงืึทืฅ ืื•ืŸ ืคึผืจืึธื•ืคื™ื™ืœื–. ืึทื–ื•ื™, ืื•ื™ื‘ ืื™ืจ ืึทืจื‘ืขื˜ ื“ื™ืคืขืจืขื ื˜ืœื™, ืื™ืจ ืงืขืŸ ื”ืึธื‘ืŸ ืฆื• ืึทื“ืึทืคึผื˜. ื“ื™ ืžืขืจืกื˜ ื•ื•ื™ื›ื˜ื™ืง ื–ืึทืš ืื™ื– ืึทื– ืื™ืจ ื“ืึทืจืคึฟืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ .xcodebuild, ื•ื•ืึธืก ื•ื•ืขื˜ ืคื•ื ื˜ ืฆื• ื“ื™ ื ื™ื™ื˜ื™ืง ื˜ืขืงืขืก, ืื•ืŸ ื“ื™ ืงื™ื™ื˜ืฉืึทื™ืŸ ืžื•ื–ืŸ ื–ื™ื™ืŸ ื‘ื ื™ืžืฆื ืื•ื™ืฃ ื“ื™ ื‘ื•ื™ืขืŸ ืงืึธืžืคึผื™ื•ื˜ืขืจ ืคึฟืึทืจ ื“ื™ ื‘ืึทื ื™ืฆืขืจ ืื•ื ื˜ืขืจ ื•ื•ืขืžืขื ืก ื ืึธืžืขืŸ ื“ืขืจ ืจืึทื ืขืจ ืื™ื– ืคืœื™ืกื ื“ื™ืง. ืคึฟืึทืจ ื“ื™ื’ื™ื˜ืึทืœ ื›ืกื™ืžืข ืžื™ืจ ื ื•ืฆืŸ ืคืึทืกื˜ืœืึทื ืข, ืื•ืŸ ืื•ื™ื‘ ืขืก ื–ืขื ืขืŸ ืคึผืจืึธื‘ืœืขืžืก ืึธื“ืขืจ ืื™ืจ ื•ื•ื™ืœืŸ ืฆื• ื•ื•ื™ืกืŸ ืžืขืจ, ื˜ืฉืขืง ืื•ื™ืก ื–ื™ื™ืขืจ ื“ืขื˜ืึทื™ืœืก ื“ืึทืงื™ื•ืžืขื ื˜ื™ื™ืฉืึทืŸ ื•ื•ืขื’ืŸ ื“ื™ื’ื™ื˜ืึทืœ ืกื™ื’ื ืึทื˜ืฉืขืจื–.

ืื™ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ืš ื ื•ืฆืŸ ื“ืขื ืฆื•ื’ืึทื ื’ ืกืขืจื˜ ืื•ืŸ ื–ื™ืคืฅ, ืึธื‘ืขืจ ืคึฟืึทืจ ืคืึทืงื˜ื™ืฉ ื ื•ืฆืŸ ืขืก ืื™ื– ืžื™ืกื˜ืึธืžืข ื‘ืขืกืขืจ ืคึผืึทืกื™ืง ื’ืœื™ื™ึทื›ืŸ.

ืคึผืจื™ืคึผืขืจื™ื ื’ GitLab ืื•ืŸ ืคืึทืกื˜ืœืึทื ืข

ืคึผืจื™ืคึผืขืจื™ื ื’ ืกื™ ืจืึทื ืขืจ

ื ืึธืš ื’ืขื–ืืžืœื˜ ืึทืœืข ื“ื™ ื“ืึทื˜ืŸ, ืžื™ืจ ืžืึทืš ืื•ื™ืฃ ืฆื• ื“ื™ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืคื•ืŸ ื“ื™ GitLab ืจืึทื ืขืจ ืื•ื™ืฃ ื“ื™ MacOS ืžื™ื˜ืœ. ืฆื•ื ื‘ืึทื“ื•ื™ืขืจืŸ, ืื™ืจ ืงืขื ืขืŸ ื‘ืœื•ื™ื– ืžืึทื›ืŸ ื™ืึธืก ืึทืคึผืคึผืก ืื•ื™ืฃ ืžืึทืงืึธืก. ืึธื‘ืขืจ ืึทืœืฅ ืงืขืŸ ื˜ื•ื™ืฉืŸ, ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ื“ืขืจื•ื•ืึทืจื˜ืŸ ืคึผืจืึธื’ืจืขืก ืื™ืŸ ื“ืขื ื’ืขื’ื ื˜, ื”ืึทืœื˜ืŸ ืึทืŸ ืื•ื™ื’ ืื•ื™ืฃ ืคึผืจืึทื“ื–ืฉืขืงืก ื•ื•ื™ xcbuild ะธ ืฆื™ื™ื›ืŸ, ืื•ืŸ ืื•ื ื“ื–ืขืจ ืื™ื ืขืจืœืขื›ืขืจ ืึทืจื‘ืขื˜ ื’ื™ื˜ืœืึทื‘-ืกืข #57576.

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ ืœื•ื™ืคืขืจ ืื™ื– ื–ื™ื™ืขืจ ืคึผืฉื•ื˜. ื’ื™ื™ ืงืจืึทื ื˜ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ GitLab Runner ืื•ื™ืฃ 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. ื ืึธืจ ื ืึธื›ืคืึธืœื’ืŸ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ืคึฟืึทืจ ื™ื ืกื˜ืึธืœื™ื ื’ ืื•ืŸ ืคืœื™ืกื ื“ื™ืง ืคืึทืกื˜ืœืึทื ืข, ืกืคึผืขืฆื™ืขืœ ืื™ืŸ ื“ื™ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื•ื•ืขื’ืŸ Gemfile, ื•ื•ื™ื™ึทืœ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฉื ืขืœ ืื•ืŸ ืคึผืจื™ื“ื™ืงื˜ืึทื‘ืึทืœ ืงืึทื˜ืขืจ ื“ื•ืจืš ืึท ืึธื˜ืึทืžื™ื™ื˜ื™ื“ ืกื™ ืจืขืจื  - ืœื™ื ื™ืข.

ืื™ืŸ ื“ื™ื™ืŸ ืคึผืจื•ื™ืขืงื˜ ื•ื•ืขื’ื•ื•ื™ื™ึทื–ืขืจ, ืœื•ื™ืคืŸ ื“ื™ ืงืึทืžืึทื ื“ื–:

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

ืึทืœืข ื•ื™ืกื’ืขืฆื™ื™ื›ื ื˜! ืžื™ืจ ืฉื˜ืขืœืŸ ื“ืขื ืคึฟืึธืจืžืึทื˜ ืฆื• UTF-8 ืคึฟืึทืจ ืคืึทืกื˜ืœืึทื ืข ื•ื•ื™ ืคืืจืœืื ื’ื˜, ื ื•ืฆืŸ ืกื˜ืจืึทื˜ืขื’ื™ืข 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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’