Help us learn about your current experience with the documentation. Take the survey.

教程:使用 GitLab Mobile DevOps 构建 iOS 应用

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

要设置移动 DevOps:

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

开始之前

在开始本教程之前,请确保您拥有:

  • 一个有权访问 CI/CD 流水线的 GitLab 账户
  • 您的移动应用代码位于一个 GitLab 仓库中
  • 一个 Apple Developer 账户
  • 已在本地安装 fastlane

设置您的构建环境

使用 GitLab 托管的运行器, 或设置 自管理运行器 来完全控制您的构建环境。

  1. 在您的仓库根目录中创建一个 .gitlab-ci.yml 文件。

  2. 添加一个 受支持的 macOS 镜像,以便在 macOS GitLab 托管运行器(测试版)上运行作业:

    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 "为开发构建并签名应用程序"
      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 设置应用分发

已签名的构建版本可以通过 Mobile DevOps Distribution 集成上传到 Apple App Store。

先决条件:

  • 您必须拥有一个已注册 Apple Developer Program 的 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. 在左侧边栏,选择 Search or go to 并找到您的项目。
    2. 选择 Settings > Integrations
    3. 选择 Apple App Store Connect
    4. Enable integration 下,勾选 Active 复选框。
    5. 提供 Apple App Store Connect 配置信息:
      • Issuer ID:Apple App Store Connect 的发行者 ID。
      • Key ID:所生成私钥的密钥 ID。
      • Private key:生成的私钥。此密钥只能下载一次。
      • Protected branches and tags only:仅启用以在受保护的分支和标签上设置变量。
    6. 选择 Save changes
  3. 将发布步骤添加到您的流水线和 fastlane 配置中。

以下是示例 fastlane/Fastfile

default_platform(:ios)

platform :ios do
  desc "为分发构建并签名应用程序,上传到 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

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

示例项目

提供了配置了用于构建、签名和发布移动应用的流水线的示例 Mobile DevOps 项目:

  • Android
  • Flutter
  • iOS

Mobile DevOps Demo Projects 组中查看所有项目。