使用 GitLab 和 fastlane 將 iOS 應用程序發佈到 App Store

使用 GitLab 和 fastlane 將 iOS 應用程序發佈到 App Store

GitLab 與 fastlane 如何收集、簽署 iOS 應用程序並將其發佈到 App Store。

我們最近有 關於如何快速構建和運行 Android 應用程序的帖子 與 GitLab 和 快車道。 在這裡,我們將了解如何構建和運行 iOS 應用程序並將其發佈到 TestFlight。 看看有多酷 我正在使用 GitLab Web IDE 在 iPad Pro 上進行更改,我在開發該應用程序的同一台 iPad Pro 上進行了程序集並獲取了該應用程序測試版本的更新。

這裡我們將採取 Swift 上的簡單 iOS 應用,我和他一起錄製了視頻。

關於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 應用程序。 但一切都會改變,如果您期望在該領域取得進展,請密切關注諸如此類的項目 xcbuild и 符號,以及我們的內部任務 gitlab-ce#57576.

設置跑步者非常簡單。 跟隨電流 在 macOS 上設置 GitLab Runner 的說明.

筆記。 運行者必須使用可執行程序 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。 只需關注 安裝和運行 fastlane 的說明,特別是在關於 文件,因為我們需要通過自動化 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 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

所有這些! 我們根據需要將fastlane的格式設置為UTF-8,使用策略 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 技巧 用於快速通道,以防萬一。 您可能想使用 CI_BUILD_ID (對於增量構建) 自動增加版本.

fastlane 的另一個很酷的功能是 自動截圖 對於 App Store,設置非常簡單。

在評論中告訴我們您的體驗,並分享您改進 GitLab iOS 應用程序開發的想法。

來源: www.habr.com

添加評論