
GitLab 如何利用 fastlane 建置、簽署並將 iOS 應用程式發佈到 App Store。
我們最近有一個 使用 GitLab 和 。在這裡我們將看到如何建立和運行 iOS 應用程式並將其發佈到 TestFlight。看看吧,有多酷? 之後,我進行了建置並在開發該應用程式的同一台 iPad Pro 上取得了該應用程式測試版本的更新。
在這裡我們將 ,我和他一起錄製了影片。
關於 Apple Store 配置的幾句話
我們需要 App Store 中的應用程式、分發憑證和設定檔來將所有內容連結在一起。
這裡最困難的部分是在 App Store 中設定簽名權限。我希望你能自己解決這個問題。如果您是新手,我會為您指明正確的方向,但我們不會在這裡深入討論管理 Apple 憑證的複雜性,而且它們不斷變化。這篇文章將幫助您入門。
我的應用程式
您需要 App Store Connect 中的一個應用程序,這樣您就有了一個用於配置的 ID。 .xcodebuild。設定檔和應用程式 ID 結合了程式碼建置、定價和可用性,以及用於向使用者分發測試應用程式的 TestFlight 配置。不要進行公開測試,如果您的團隊規模較小、設定簡單且不需要 Apple 的額外權限,那麼私人測試就足夠了。
初始化設定檔
除了應用程式設定之外,您還需要在 Apple 開發者控制台的憑證、識別碼和設定檔部分中建立的 iOS 分發和開發金鑰。所有這些證書都可以合併到一個設定檔中。
需要進行身份驗證的使用者需要能夠建立證書,否則在階段 你會看到一個錯誤。
其他選項
除了這種簡單的方法之外,還有其他方法可以設定證書和設定檔。因此,如果您的工作方式不同,您可能需要進行調整。最重要的是你需要一個配置 .xcodebuild,它將指向必要的文件,並且鑰匙串必須在構建計算機上可供運行者以其名義運行的用戶使用。對於數位簽名,我們使用 fastlane,如果有問題或您想了解更多信息,請查看其詳細信息 .
在這個例子中我使用的方法 ,但對於實際使用來說它可能更適合 .
準備 GitLab 和 fastlane
準備 CI Runner
收集完所有這些資料後,我們繼續在 MacOS 裝置上設定 GitLab 運行器。不幸的是,只能在 MacOS 上製作 iOS 應用程式。但事情可能會發生變化,如果你期待這一領域的進展,請關注以下項目 и 以及我們的內部任務 .
設定跑步者非常簡單。保持最新狀態 .
筆記。跑步者必須使用可執行程式。 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 需要建置的金鑰。測試這一點的最簡單方法是作為將運行建置的用戶登入並嘗試手動運行建置。如果系統要求存取鑰匙串,請選擇「始終允許」以使 CI 正常運作。可能值得進入並監控前幾個管道以確保它們不再要求鑰匙串。問題是,蘋果不讓我們輕易使用自動模式,但一旦你做對了,一切都會好起來。
快速通道初始化
若要在專案中使用 fastlane,請運行 fastlane init。只需關注 ,特別是在關於 ,因為我們需要透過自動 CI 管道實現快速且可預測的啟動。
在專案目錄中,執行以下命令:
xcode-select --install
sudo gem install fastlane -NV
# Alternatively using Homebrew
# brew cask install fastlane
fastlane initfastlane 將要求進行基本配置,然後在專案中建立一個包含三個檔案的 fastlane 資料夾:
1. fastlane/Appfile
這裡沒有什麼複雜的。只需確保您的 Apple ID 和 App ID 正確即可。
app_identifier("com.vontrance.flappybird") # The bundle identifier of your app
apple_id("your-email@your-domain.com") # Your Apple email address2. fastlane/Fastfile
Fastfile 定義組裝步驟。我們使用了很多內建的快速通道功能,所以這裡的一切也都很清楚。我們建立一行來取得憑證、運行建置並將其上傳到 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
end3. 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太棒了! ,我們使用策略 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。細節 。如果您使用其他簽名方法,則沒有必要這樣做。
總之
您可以看到它是如何運作的 .
我希望這篇文章對您有所幫助,並能啟發您在 GitLab 專案中使用 iOS 建置。這是另一個 為了以防萬一,為了 fastlane。你可能會想使用 CI_BUILD_ID (對於增量構建) .
fastlane 的另一個很酷的功能是 適用於 App Store,設定起來非常容易。
在評論中分享您的經驗並分享有關如何改進 GitLab 以進行 iOS 應用程式開發的想法。
來源: www.habr.com
