GitLab 與 fastlane 如何收集、簽署 iOS 應用程序並將其發佈到 App Store。
我們最近有
這裡我們將採取
關於Apple Store配置的幾句話
我們需要一個 App Store 應用程序、分發證書和一個配置文件來將所有內容連接在一起。
這裡最困難的事情是在 App Store 中設置簽名權。 我希望你能自己解決這個問題。 如果您是新手,我會為您指出正確的方向,但我們不會在這裡談論管理 Apple 證書的複雜性,而且它們在不斷變化。 這篇文章將幫助您入門。
我的應用
您需要 App Store Connect 中有一個應用程序,以便您有一個用於配置的 ID .xcodebuild
。 配置文件和應用程序 ID 結合了代碼構建、定價和可用性以及用於向用戶分發測試應用程序的 TestFlight 配置。 不要進行公開測試,如果您有一個小團體、簡單的設置並且不需要 Apple 的額外權限,則私人測試就足夠了。
初始化配置文件
除了應用程序設置之外,您還需要在 Apple 開發人員控制台的“證書、標識符和配置文件”部分中創建 iOS 分發和開發密鑰。 所有這些證書都可以組合成一個配置文件。
將進行身份驗證的用戶需要能夠創建證書,否則步驟如下
其他選項
除了這個簡單的方法之外,還有其他方法來配置證書和配置文件。 因此,如果您的工作方式不同,您可能必須適應。 最重要的是你需要配置 .xcodebuild
,它將指向必要的文件,並且鑰匙串必須在構建計算機上可供運行運行程序的用戶使用。 對於數字簽名,我們使用 fastlane,如果出現問題或者您想了解更多信息,請查看他們的詳細信息
在這個例子中我使用的方法
準備 GitLab 和 fastlane
準備 CI 運行器
收集完所有這些數據後,我們繼續在 MacOS 設備上配置 GitLab 運行器。 不幸的是,您只能在 MacOS 上製作 iOS 應用程序。 但一切都會改變,如果您期望在該領域取得進展,請密切關注諸如此類的項目
設置跑步者非常簡單。 跟隨電流
筆記。 運行者必須使用可執行程序 shell
。 這是在 macOS 上構建 iOS 以直接作為用戶而不是通過容器工作所必需的。 如果您正在使用 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
。 只需關注
在您的項目目錄中,運行以下命令:
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/
我們的 .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
快車道,如上所示。 結果,我們在 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 構建。 這是另一個 CI_BUILD_ID
(對於增量構建)
fastlane 的另一個很酷的功能是
在評論中告訴我們您的體驗,並分享您改進 GitLab iOS 應用程序開發的想法。
來源: www.habr.com