在本教程中,您将使用极狐 GitLab CI/CD 创建一个流水线,用于构建您的 iOS 移动应用程序,使用您的凭据对其进行签名,并将其分发到应用商店。

要设置移动 DevOps:

  1. 设置您的构建环境
  2. 使用 fastlane 配置代码签名
  3. 通过 Apple Store 集成和 fastlane 设置应用分发

在您开始之前

在开始本教程之前,请确保您具备以下条件:

  • 一个拥有 CI/CD 流水线访问权限的极狐 GitLab 账户
  • 您的移动应用代码存储在极狐 GitLab 仓库中
  • 一个 Apple 开发者账户
  • 本地安装了 fastlane

设置您的构建环境

使用 极狐 GitLab 托管的 runner,或设置 私有化部署 runner 以完全控制构建环境。

  1. 在您的仓库根目录中创建一个 .gitlab-ci.yml 文件。
  2. 添加一个 受支持的 macOS 镜像 以在 macOS 极狐 GitLab 托管 runner(测试版)上运行一个作业:

    test:
      image: macos-14-xcode-15
      stage: test
      script:
        - fastlane test
      tags:
        - saas-macos-medium-m1
    

使用 fastlane 配置代码签名

要为 iOS 设置代码签名,请使用 fastlane 将签名证书上传到极狐 GitLab:

  1. 初始化 fastlane:

    fastlane init
    
  2. 使用配置生成一个 Matchfile

    fastlane match init
    
  3. 在 Apple Developer 门户中生成证书和配置文件,并将这些文件上传到极狐 GitLab:

    PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match development
    
  4. 可选。如果您已经为您的项目创建了签名证书和配置文件,使用 fastlane match import 将现有文件加载到极狐 GitLab:

    PRIVATE_TOKEN=YOUR-TOKEN bundle exec fastlane match import
    

您将被提示输入文件的路径。在提供这些详细信息后,您的文件将被上传并在项目的 CI/CD 设置中可见。如果在导入过程中提示 git_url,可以安全地将其留空并按 enter

以下是包含此配置的示例 fastlane/Fastfile.gitlab-ci.yml 文件:

  • fastlane/Fastfile:

    default_platform(:ios)
    
    platform :ios do
      desc "Build and sign the application for development"
      lane :build do
        setup_ci
    
        match(type: 'development', readonly: is_ci)
    
        build_app(
          project: "ios demo.xcodeproj",
          scheme: "ios demo",
          configuration: "Debug",
          export_method: "development"
        )
      end
    end
    
  • .gitlab-ci.yml:

    build_ios:
      image: macos-12-xcode-14
      stage: build
      script:
        - fastlane build
      tags:
        - saas-macos-medium-m1
    

通过 Apple Store 集成和 fastlane 设置应用分发

使用移动 DevOps 分发集成,可以将签名的构建上传到 Apple App Store。

前提条件:

  • 您必须拥有一个注册在 Apple 开发者计划中的 Apple ID。
  • 您必须在 Apple App Store Connect 门户中为您的项目生成一个新的私钥。

要使用 Apple Store 集成和 fastlane 创建 iOS 分发:

  1. 为 App Store Connect API 生成一个 API 密钥。在 Apple App Store Connect 门户中,为您的项目生成一个新的私钥。
  2. 启用 Apple App Store Connect 集成:
    1. 在左侧边栏,选择 搜索或转到 并找到您的项目。
    2. 选择 设置 > 集成
    3. 选择 Apple App Store Connect
    4. 启用集成 下,选择 激活 复选框。
    5. 提供 Apple App Store Connect 配置信息:
      • 发行者 ID:Apple App Store Connect 发行者 ID。
      • 密钥 ID:生成的私钥的密钥 ID。
      • 私钥:生成的私钥。您只能下载此密钥一次。
      • 仅限受保护的分支和标签:启用以仅在受保护的分支和标签上设置变量。
    6. 选择 保存更改
  3. 将发布步骤添加到您的流水线和 fastlane 配置中。

以下是一个示例 fastlane/Fastfile

default_platform(:ios)

platform :ios do
  desc "Build and sign the application for distribution, upload to TestFlight"
  lane :beta do
    setup_ci

    match(type: 'appstore', readonly: is_ci)

    app_store_connect_api_key

    increment_build_number(
      build_number: latest_testflight_build_number(initial_build_number: 1) + 1,
      xcodeproj: "ios demo.xcodeproj"
    )

    build_app(
      project: "ios demo.xcodeproj",
      scheme: "ios demo",
      configuration: "Release",
      export_method: "app-store"
    )

    upload_to_testflight
  end
end

以下是一个示例 .gitlab-ci.yml

beta_ios:
  image: macos-12-xcode-14
  stage: beta
  script:
    - fastlane beta

恭喜!您的应用现已设置为自动构建、签名和分发。尝试创建一个合并请求以触发您的第一个流水线。