แแ แแฅแแแ แแแแแขแ แ, แแแฃแจแแแ แขแแกแขแแ แแ แแแแแแแแแจแ
แแแแแแแ แแ แฃแแแ แแแแแแชแแแ Firebase Test Lab Android-แแกแแแแก แแ แซแแแแแ แแแแแฌแแแ แงแแแแแคแแ แ, แแแแขแแ แแแแแแฌแงแแแขแ แแ แแแฅแขแแก iOS แกแแขแแกแขแ แแแคแ แแกแขแ แฃแฅแขแฃแ แ แแแแแ แแแแแแ แแแแแงแแแแแแแ. แแแแ แ แแแแแฌแแ แแฃแแแจแ แจแแแแกแแแ แแ แแแ แแแแแ แงแแแแแคแแ แ แแ แแแแแแแแแแ, แแแแขแแ แแแแแแฌแงแแแขแ แแแแแฌแแ แ แกแแแแฃแ แแแ แกแขแแขแแ แแแแแแแก, แแแกแแช แฏแแ แแแแแ แฃแญแแ แก.
แแกแ แ แแ, แแฃ แแฅแแแ แแแฅแแ UI แขแแกแขแแแ iOS แแ แแแฅแขแแ, แจแแแแซแแแแ แฃแแแ แกแชแแแแ แแแแ แแแจแแแแ แ แแแแฃแ แแแฌแงแแแแแแแแแแ แแฆแแก, แแแแแแกแแแแแกแแแ แแ แแแฌแแแแแฃแแ Good Corporation-แแก แแแแ . แแแแแขแแ แแกแแแฃแแแแแแแก แแแแแกแแแแแแแ แแแขแแจแ.
แกแแฃแแแขแจแ แแ แแแแแแฌแงแแแขแ แแแแแคแฃแซแแแแแแ แ แแแแแแแแ แกแแฌแงแแกแ แแแแแชแแแแแ - แแแ แซแ แกแแชแแแ GitHub-แแ แแ CircleCI build แกแแกแขแแแแแ. แแแแแแแชแแแก แกแแฎแแแแ AmazingApp, bundleID แแ แแก com.company.amazingapp. แแ แฌแแ แแแแแแแแแ แแ แแแแแชแแแแแก แแแฃแงแแแแแแแแ, แ แแแ แจแแแชแแ แแแก แจแแแแแแแ แแแแแแฃแแแแ.
แแฃ แแฅแแแแก แแ แแแฅแขแจแ แแแ แแแแฃแแ แแแแแฌแงแแแขแแแแแแแ แแแแกแฎแแแแแแฃแแแ แแแแแ แแแ, แแแแแแแแแ แแ แแฅแแแแ แแแแแชแแแแแแ แแแแแแขแแ แแแจแ.
1. แแแแแ แขแแกแขแแแ
แจแแฅแแแแแ แแฎแแแ แแ แแแฅแขแแก แคแแแแแแ UI แขแแกแขแแแแกแแแแก:
$ git checkout develop
$ git pull
$ git checkout -b โfeature/add-ui-testsโ
แแแแแ แแแแฎแกแแแ แแ แแแฅแขแ XCode-แจแ แแ แจแแแฅแแแแ แแฎแแแ Target แแแขแแ แคแแแกแแก แขแแกแขแแแแ [XCode -> File -> New -> Target -> iOS Testing Bundle] แแ แแแแชแแ แแแก แแฎแกแแ-แแแแแแ แขแแแแก แกแแฎแแแ AmazingAppUITests.
แแแแแแแ แจแแฅแแแแแ Target-แแก Build Phases แแแแงแแคแแแแแแจแ แแ แจแแแแแฌแแแ Target Dependencies - AmazingApp, แแแแแแ แฌแงแแ แแแแจแ - AmazingAppUITests.swift.
แแแ แแ แแ แแฅแขแแแแ แแจแแแแแแก แกแฎแแแแแกแฎแแ แแแ แแแแขแแแแก แชแแแแ แกแฅแแแแแแ แแแแแงแแคแ. แฉแแแ แแฅแแแแ แกแฅแแแแก แฉแแแแ UI แขแแกแขแแแแกแแแแก [XCode -> Product -> Scheme -> New Scheme] แแ แแแซแแแแ แแแก แแแแแ แกแแฎแแแก: AmazingAppUITests.
แจแแฅแแแแแ แกแฅแแแแก แกแขแ แฃแฅแขแฃแ แ แฃแแแ แจแแแชแแแแแก แซแแ แแแแแ แแแแแแแชแแแก แกแแแแแแแก - AmazingApp แแ Target UI แขแแกแขแแแก - AmazingAppUITests - แแฎแแแแ แแแ แแแแก แกแฃแ แแแ
แจแแแแแแ, แฉแแแ แแฅแแแแ แแฎแแ build แแแแคแแแฃแ แแชแแแก UI แขแแกแขแแแแกแแแแก. XCode-แจแ แแแแฌแแแแฃแแแ แแ แแแฅแขแแก แคแแแแแ แแ แแแแแแแ แแแคแแ แแแชแแแก แแแแงแแคแแแแแแจแ. แแแแญแแ แแ "+" แแ แจแแฅแแแแแ แแฎแแแ แแแแคแแแฃแ แแชแแ, แแแแแแแแแ XCtest. แแก แแแแแญแแ แแแแ แแแแแแแแจแ, แ แแแ แแแแแแแ แแแแชแแแแ แขแแแแฃแ แแ แชแแแแ, แ แแแแกแแช แกแแฅแแ แแฎแแแ แแแแแก แฎแแแแแฌแแ แแก.
แแฅแแแแก แแ แแแฅแขแจแ แแ แแก แแแแแแฃแ แกแแแ แกแแแแแแ: แแแแแแ แ แแแแแแแชแแ, แแ แแแฃแแ แขแแกแขแแแ (แแแแแก แแ แแแแแก, แแกแแแ แแ แกแแแแแแ, แแ แ?) แแ Target UI แขแแกแขแแแ, แ แแแแแแแช แฉแแแ แจแแแฅแแแแแ.
แแแแแแแ Target AmazingApp, Build Settings แฉแแแแ แแแ, Code Signing Identity แแแแงแแคแแแแแแจแ. XCtest แแแแคแแแฃแ แแชแแแกแแแแก แแแ แฉแแแ iOS Developer. แแแแแก แฎแแแแแฌแแ แแก แกแขแแแแก แแแแงแแคแแแแแแจแ แแแ แฉแแแ Manual. แฉแแแ แฏแแ แแ แจแแแแแฅแแแแ แฃแแ แฃแแแแแงแแคแแก แแ แแคแแแ, แแแแ แแ แแแก แแฃแชแแแแแแแ แแแแฃแแ แฃแแแแแแ แชแแขแ แแแแแแแแแแแ.
Target AmazingAppUITests-แแกแแแแกแแช แแแแแแก แแแแแแแแ, แแแแ แแ Product Bundle Identifier แกแแแขแจแ แจแแแแแแแ แ com.company.amazingappuitests.
2. Apple Developer Program-แจแ แแ แแแฅแขแแก แแแงแแแแแ
แแแแแแแ Apple Developer Program-แแก แแแแ แแแ, แแแแแแแ แกแแฅแชแแแจแ แกแแ แแแคแแแแขแแแ, แแแแแขแแคแแแแขแแ แแแ แแ แแ แแคแแแแแ แแ แจแแแแแ แแแแแขแแคแแแแขแแ แแแแก แแฃแแฅแขแแก App IDs แกแแแขแจแ. แจแแฅแแแแแ แแฎแแแ แแแแแแแชแแแก ID แกแแฎแแแฌแแแแแแ AmazingAppUITests แแ bundleID com.company.amazingappuitests.
แแฎแแ แแแแฅแแก แจแแกแแซแแแแแแแ แชแแแแ แกแแ แขแแคแแแแขแแ แแแแแฌแแ แแ แฉแแแแ แขแแกแขแแแ, แแแแ แแ... แขแแกแขแแ แแแแกแแแแก แแฌแงแแแแก แแ แแชแแแฃแ แ แแฃแแแกแฎแแแแก แแแแแ แแแแแแแชแแแก แแฌแงแแแแก แแ แกแแชแแแแ แ แแแแแก แแฌแงแแแแก. แจแแกแแแแแแกแแ, แฉแแแ แฌแแแแจแ แแแแแแแ แ แแ แ แแแแแขแแก แแแ แแแแแแก แแแฌแแแแแก แฎแแแแแฌแแ แแก แแ แแแแแแแก แแ แแ แฃแแ แฃแแแแแงแแคแแก แแ แแคแแแแ. แกแแแแแแแแ แแ, แแ แกแแแแแก แแแ แขแแแ แแ แแแแแแแขแฃแ แ แแแแแฌแงแแแขแ - Wildcard App ID. แฉแแแ แแแแแแ แแแ แแแแก แแฎแแแ ID-แแก แจแแฅแแแแก แแ แแชแแแฃแ แแก, แแแแ แแ Explicit App ID-แแก แแแชแแแแ, แแแ แฉแแแ Wildcard App ID, แ แแแแ แช แแแ แแแแก แกแฃแ แแแแ.
แแ แแขแแแแ แฉแแแ แแแแแกแ แฃแแแ developer.apple.com-แแแ แแฃแจแแแแ, แแแแ แแ แแ แแฃแแแ แแก แคแแแฏแแ แแก แแ แแแแแแชแแ แแแ. แฒฌแแแแแแ
แงแฃแ แแแฆแแแแแแแ แแแแแฎแแแแแ แจแแแแจแแ, แ แแ แแ แแ แแแ แแแแก แแแแแกแแงแแแแแแแ แแแแแญแแ แแแแ แแแ แแแ แกแแชแแแ แแ แแแแแ แแจแ Apple Developer Program-แแ แแ Github-แแ แฌแแแแแแ. แฉแแแ แแฅแแแแ (แแฃ แแแฃแแแแแแแแ แแกแแแ แ แแ แแ แแ แกแแแแแก) แคแแ แแแก แแแแแ แแจแก [แแ.แคแแกแขแแ แแแชแฃแแแ], แจแแฅแแแแแ แซแแแแ แ แแแ แแแ, แแแแ แแแแกแขแ แแ แแ developer.apple.com-แแ แแ แแแแแจแแแ แแแ แแ แแแฅแขแแก แแแแแแแกแขแ แแขแแ แแ. แจแแแแแแ, แฉแแแ แแแซแแแแ แแแแแ แแจแก แฌแแแแแแก แแฅแแแแ แแแแแแแแแก github แกแแชแแแแ แแ แแฅแแแแ แแฎแแ แแแ แซแ แกแแชแแแก แกแแฎแแแแ, แ แแแแ แแชแแ AmazingAppMatch.
3. Fastlane-แแก แแ แแแขแฉแแก แแ แแแ แแแแก แแแงแแแแแ
แแแฎแกแแแแ แขแแ แแแแแแ, แแแแแแแ แแ แแแฅแขแแก แกแแฅแแฆแแแแแจแ แแ แแแแแแกแขแแแแ แแ fastlane, แ แแแแ แช แแก แแแแแแแแฃแแแ
$ fastlane init
แแฅแแแ แแแแแแฎแแแแแแ แแแ แฉแแแ แแแแแงแแแแแแก แฎแแแแแกแแฌแแแแแ แแแแคแแแฃแ แแชแแแแ. แแแ แฉแแแ แแแแแฎแ แแแ แแแแขแ - แฎแแแแ แแ แแแฅแขแแก แแแงแแแแแ.
แแ แแแฅแขแก แแฅแแก แแฎแแแ แแแ แแฅแขแแ แแ fastlane, แ แแแแแแช แจแแแชแแแก แแ แคแแแแก - Appfile แแ Fastfile. แแแแแแ, แฉแแแ แแแแแฎแแแ แกแแ แแแกแแก แแแแแชแแแแแก Appfile-แจแ แแ แแฌแแ แ แกแแแฃแจแแแแแก Fastfile-แจแ, แ แแแแแกแแช Fastlane แขแแ แแแแแแแแแแจแ แฃแฌแแแแแแ แแแแแแก. แแแ แฉแแแ แฌแแแแแแฎแแ แแคแแชแแแแฃแ แ แแแแฃแแแแขแแชแแ:
แแแฎแกแแแแ Appfile แแฅแแแแก แกแแงแแแ แแ แขแแฅแกแขแฃแ แ แแแแฅแขแแ แจแ แแ แแแแขแแแแ แจแแแแแ แคแแ แแแจแ:
app_identifier "com.company.amazingapp" # Bundle ID
apple_dev_portal_id "[email protected]" # ะกะพะทะดะฐะฝะฝัะน ะธะฝััะฐััััะบัััะฝัะน ะฐะบะบะฐัะฝั, ะธะผะตััะธะน ะฟัะฐะฒะพ ะฝะฐ ัะตะดะฐะบัะธัะพะฒะฐะฝะธะต iOS ะฟัะพะตะบัะฐ ะฒ Apple Developer Program.
team_id "LSDY3IFJAY9" # Your Developer Portal Team ID
แฉแแแ แแแ แฃแแแแแแ แขแแ แแแแแแจแ แแ แแคแแชแแแแฃแ แ แกแแฎแแแแซแฆแแแแแแแก แแแฎแแแแแ แแแฌแงแแแ แแแขแฉแแก แแแแคแแแฃแ แแชแแแก.
$ fastlane match init
$ fastlane match development
แจแแแแแแ, แจแแแงแแแแแ แแแแฎแแแแแแ แแแแแชแแแแแ - แกแแชแแแ, แแแแแ แแจแ, แแแ แแแ แแ แ.แจ.
แแแแจแแแแแแแแแแ: แ แแแแกแแช แแแ แแแแแ แแแฃแจแแแ แแแขแฉแแก แแ แแแ แแแ, แแฅแแแ แแแแแแฎแแแแแแ แแแ แแแแก แจแแงแแแแ แกแแชแแแจแ แแแกแแจแแคแ แแ. แซแแแแแ แแแแจแแแแแแแแแแ แแ แแแ แแแแก แจแแแแฎแแ; แแก แแแแแญแแ แแแแ CI แกแแ แแแ แแก แแแงแแแแแแกแแก!
แแฎแแแ แคแแแแ แแแแแฉแแแ fastlane แกแแฅแแฆแแแแแจแ - Matchfile. แแแฎแกแแแแ แแก แแฅแแแแก แกแแงแแแ แแ แขแแฅแกแขแฃแ แ แแแแฅแขแแ แจแ แแ แแฉแแแแแ แแกแ:
git_url("https://github.com/YourCompany/AmazingAppMatch") #ะกะพะทะดะฐะฝะฝัะน ะฟัะธะฒะฐัะฝัะน ัะตะฟะพะทะธัะพัะธะน ะดะปั ั
ัะฐะฝะตะฝะธั ัะตััะธัะธะบะฐัะพะฒ ะธ ะฟัะพัะฐะนะปะพะฒ.
type("development") # The default type, can be: appstore, adhoc, enterprise or development
app_identifier("com.company.amazingapp")
username("[email protected]") # Your Infrastructure account Apple Developer Portal username
แฉแแแ แแฃแกแขแแ แแ แแแแ แแแแกแแแ แแแก, แแฃ แแแกแฃแ แก แแแแแแแแจแ แแแแแแแงแแแแ แแแขแฉแ Crashlytics-แจแ แแ/แแ AppStore-แจแ แฉแแแแแแแกแแแแก build-แแแแก แแแกแแคแแ แแแแแแ, แแแฃ แแฅแแแแ แแแแแแแชแแแก แแแแแขแแก ID-แแ แฎแแแแแฌแแ แแกแแแแก.
แแแแ แแ, แ แแแแ แช แแแแฎแกแแแก, แฉแแแ แจแแแฅแแแแแ แกแแแชแแแแฃแ แ Wildcard ID, แ แแแ แฎแแแ แแแแฌแแ แแ แกแแขแแกแขแ build-แก. แแแแขแแ, แแแฎแกแแแแ Fastfile แแ แจแแแแ แแฎแแ แแแแจแ:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests" # ัะพะทะดะฐะตะผ ะพัะดะตะปัะฝัะน ะฑัะฐะฝั ะดะปั development ัะตััะธัะธะบะฐัะฐ ะดะปั ะฟะพะดะฟะธัะธ ัะตััะพะฒะพะน ัะฑะพัะบะธ.
)
end
แจแแแแแฎแแ แแ แจแแแแ แขแแ แแแแแแจแ
fastlane testing_build_for_firebase
แแ แฉแแแ แแฎแแแแแ, แแฃ แ แแแแ แจแแฅแแแ fastlane-แแ แแฎแแแ แกแแ แแแคแแแแขแ แแ แฉแแแ แกแแชแแแจแ. แแแแ!
แแแฎแกแแแแ XCode. แแฎแแ แฉแแแ แแแแฅแแก Match Development com.company.* แคแแ แแแก แแฃแชแแแแแแแ แฃแแ แฃแแแแแงแแคแแก แแ แแคแแแ, แ แแแแแแช แฃแแแ แแงแแก แแแแแแแแฃแแ Provisioning แแ แแคแแแแก แแแแงแแคแแแแแแจแ AmazingApp แแ AmazingAppUITests แกแแแแแแแแแแกแแแแก.
แ แฉแแแ แขแแกแขแแแแก แจแแแ แแแแก แแแแแก แแแแแขแแแ. แฒฌแแแแแแ
แแแแแ แแแแแแแแแ แแ-แแแกแขแ แแ แแแแแแแฃแ แ แแแแแแแแแแแ แแกแ, แ แแ แฉแแแแ แแแแแก testing_build_for_firebase แแแกแ แฃแแแแก แแกแ:
lane :testing_build_for_firebase do
match(
type: "development",
readonly: true,
app_identifier: "com.company.*",
git_branch: "uitests"
)
scan(
scheme: 'AmazingAppUITests', # UI Test scheme
clean: true, # Recommended: This would ensure the build would not include unnecessary files
skip_detect_devices: true, # Required
build_for_testing: true, # Required
sdk: 'iphoneos', # Required
should_zip_build_products: true, # Must be true to set the correct format for Firebase Test Lab
)
firebase_test_lab_ios_xctest(
gcp_project: 'AmazingAppUITests', # Your Google Cloud project name (ะบ ััะพะน ัััะพัะบะต ะฒะตัะฝะตะผัั ะฟะพะทะถะต)
devices: [ # Device(s) to run tests on
{
ios_model_id: 'iphonex', # Device model ID, see gcloud command above
ios_version_id: '12.0', # iOS version ID, see gcloud command above
locale: 'en_US', # Optional: default to en_US if not set
orientation: 'portrait' # Optional: default to portrait if not set
}
]
)
end
แกแ แฃแแ แแแคแแ แแแชแแแกแแแแก fastlane-แแก CircleCI-แจแ แแแงแแแแแแก แจแแกแแฎแแ, แแแ แฉแแแ แฌแแแแแแฎแแ แแคแแชแแแแฃแ แ แแแแฃแแแแขแแชแแ
แแ แแแแแแแฌแงแแแ แแฎแแแ แแแแแแแแแก แแแแแขแแแ แฉแแแแก config.yml-แจแ:
build-for-firebase-test-lab:
macos:
xcode: "10.1.0"
working_directory: ~/project
shell: /bin/bash --login -o pipefail
steps:
- checkout
- attach_workspace:
at: ~/project
- run: sudo bundle install # ะพะฑะฝะพะฒะปัะตะผ ะทะฐะฒะธัะธะผะพััะธ
- run:
name: install gcloud-sdk # ะฝะฐ mac ะผะฐัะธะฝั ะฝะตะพะฑั
ะพะดะธะผะพ ัััะฐะฝะพะฒะธัั gcloud
command: |
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null ; brew install caskroom/cask/brew-cask 2> /dev/null
brew cask install google-cloud-sdk
- run:
name: build app for testing
command: fastlane testing_build_for_firebase # ะทะฐะฟััะบะฐะตะผ lane ัะฑะพัะบะธ ะธ ะพัะฟัะฐะฒะบะธ ะฒ firebase
4. แ แแช แจแแแฎแแแ แฉแแแแก แกแแชแแแ แกแแแแก? Firebase-แแก แแแงแแแแแ.
แแแแแ แแแแแแแแแ แแแแแ, แแฃ แ แแกแแแแก แแแแฌแแ แ แกแขแแขแแ.
แจแแกแแซแแแ, แแฅแแแแ แแแ แแงแแแแแก Firebase-แก แฃแคแแกแ แแแแแแแ, แแ แจแแกแแซแแแ แกแแแ แแแ แแ แแงแแแแแก. แแแกแแแฃแขแฃแ แแ แแ แแแแแ แ แคแฃแแแแแแแขแฃแ แ แแแแกแฎแแแแแแ แแ แแ แแก, แ แแแแแ แขแแกแขแแ แแแแก แกแแญแแ แแแแแแแกแแแแก แฉแแแ แจแแแแแซแแแ แจแแแฅแแแแ แชแแแแ แแ แแแฅแขแ แแ แแ แฌแแแก แฃแคแแกแ แแแแแงแแแแแแ (แแแแแ แแ, แแ แ?)
แฉแแแ แจแแแแแแแ แ แฉแแแแก แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแ แแจแจแ (แแ แกแฎแแ, แแ แแฅแแก แแแแจแแแแแแแ) แแ แแแแแแแแ แ
แแแแจแแแแแแแแแแ: แฌแแแ แกแแคแแฎแฃแ แแ Fastfile in lane firebase_test_lab_ios_xctest-แจแ gcp_project แแแ แแแแขแ แ แฃแแแ แจแแแกแแแแแแแแแแก แแ แแแฅแขแแก แกแแฎแแแก.
แแแแฃแแแกแฎแแแแ แแแ แแแแขแ แแแ แกแแแแแแ แแแ แแแ แแแแ แแแแ.
แแ แแแฎแฃแ แแ แฉแแแแ แแ, แแแ แแแแกแขแ แแ แแแ แแแแแ แแแแแ แแจแแ
แแฃแแแ แฌแแแแฌแแแจแ 300 แแแแแ แก แแแกแชแแแก, แ แแช แแแขแแขแแกแขแแแแก แฉแแขแแ แแแแก แแแแขแแฅแกแขแจแ แกแแ แแแกแแ แฃแคแแกแ แกแแ แแแแแแแแก แแ แแ แฌแแแก แขแแแคแแกแแ. แฉแแแ แจแแแแงแแแแ แแฅแแแแ แแแแแฎแแแก แแแคแแ แแแชแแแก, แแแแแแแแแ แกแแขแแกแขแ แแแแแขแก $1 แแ แแแฆแแแ $300 แแฅแแแแก แแแแแ แแจแแ. แแ แแ แฌแแแก แจแแแแแ แแ แแแฅแขแ แแแขแแแแขแฃแ แแ แแแแแแแแชแแแแแก แฃแคแแกแ แกแแขแแ แแคแ แแแแแแแ, แแกแ แ แแ แแ แแ แแก แกแแญแแ แ แคแฃแแแก แจแแกแแซแแ แแแแแ แแแแแ แคแแฅแ แ.
แแแแฃแแ แฃแแแแ แฉแแแแ แแก Firebase แแ แแแฅแขแแ แแ แแแแแแแขแแแแ Blaze-แแก แกแแขแแ แแคแ แแแแแแจแ - แแฎแแ แฉแแแ แแแแฅแแก แแแแแกแแฎแแแแ, แแฃ แแแแแขแ แแแแแแญแแ แแแแก.
gcloud แแแขแแ แคแแแกแจแ แแแ แฉแแแ แฉแแแแ Firebase แแ แแแฅแขแ, แแแ แฉแแแ แแแแแฃแก แแแแแแ แ แแแแแแแขแ "Directory" แแ แแแแแแขแแ Cloud Testing API แแ Cloud Tools Result API.
แจแแแแแ แแแแแแแ แแแแแฃแก แแฃแแฅแขแจแ "IAM แแ แแแแแแแกแขแ แแชแแ" -> แกแแ แแแกแแก แแแแแ แแจแแแ -> แกแแ แแแกแแก แแแแแ แแจแแก แจแแฅแแแ. แฉแแแ แแแซแแแแ แฃแคแแแแแแก แแ แแแฅแขแแก แ แแแแฅแขแแ แแแแก แจแแกแแฎแแ.
แจแแฅแแแแแ API แแแกแแฆแแแ JSON แคแแ แแแขแจแ
แแแแแแฌแแ แแแ JSON แชแแขแ แแแแแแแแแแแ แแแแแญแแ แแแแ, แแแแ แแ แแฎแแ แกแแขแแกแขแ แแแแแ แแขแแ แแแก แแแงแแแแแ แแแกแ แฃแแแแฃแแแ แแแแแแฉแแแ.
5. CircleCI-แแก แแแงแแแแแ
แฉแแแแแ แแแแแแ แฃแแ แแแแฎแแ - แ แ แฃแแแ แแแแแแแแแ แแแ แแแแแแแ? แฉแแแแ แแแแกแขแ แฃแฅแชแแฃแแ แแแแ แแขแแก แแแ แแแแก แชแแแแแ แแแฅแแแแแแ แแแแแแฎแแแ แแแ แฃแกแแคแ แแฎแแ แจแแแแแแฎแแ แฉแแแแ แแแ แแแแแ แแ แกแฎแแ แแแ แซแแแแแแ แ แแแแแชแแแแแ. CircleCI แแ แแแฅแขแแก แแแ แแแแขแ แแแจแ แแแ แฉแแแ Environment Variables
แแ แแแแงแแแแ แจแแแแแแ แชแแแแแแแ:
- แแแกแแฆแแแ: GOOGLE_APPLICATION_CREDENTIALS
แแแแจแแแแแแแ: gcloud แกแแ แแแกแแก แแแแแ แแจแแก แแแกแแฆแแแแก json แคแแแแแก แจแแแแแแกแ - แแแกแแฆแแแ: MATCH_PASSWORD
แแแแจแแแแแแแ: แแแ แแแ แกแแ แแแคแแแแขแแแแ github แกแแชแแแแก แแแจแแคแแ แแกแแแแก - แแแกแแฆแแแ: FASTLANE_PASSWORD
แฆแแ แแแฃแแแแ: Apple Developer Portal แแแคแ แแกแขแ แฃแฅแขแฃแ แแก แแแแแ แแจแแก แแแ แแแ
แฉแแแ แแแแแฎแแแ แชแแแแแแแแแก, แแฅแแแแ PR-แก แแ แแฃแแแแแแแ แแแก แฉแแแแ แแฃแแแแก แแแแแ แก แแแแกแแฎแแแแแแแ.
แจแแแแแแแ
แแ แแแ แขแแแ แแแแแแฃแแแชแแแแแก แจแแแแแแ แแแแแฆแแ แแแ แแ, แกแขแแแแแฃแ แ แกแแแฃแจแแ แกแขแแแแ แขแแกแขแแ แแแแก แแ แแก แแแฌแงแแแแแแแแก แแแ แแแแ แแแแแแก แฉแแฌแแ แแก แจแแกแแซแแแแแแแแ. แขแแกแขแแก แแแแแแแแจแ แแ แแแแแแฃแกแขแ iPhone X แแแฌแงแแแแแแแแก แแแแแแ, แแแแ แแ แคแแ แแ แแแแแแแแแ แแแแแแ แแ แฉแแแแแก แกแฎแแแแแกแฎแแ แแแแแแแแแกแ แแ iOS แแแ แกแแแแแก แแแแแแแแชแแแแแ.
แแแแ แ แแแฌแแแ แแแแแแแแ Firebase แขแแกแขแแก แแแแแ แแขแแ แแแก แแขแแแแแ แแ แแแงแแแแแแก Android แแ แแแฅแขแแกแแแแก.
แฌแงแแ แ: www.habr.com