Fastlane与传统CICD对比

CICD

Posted by PaysonChen on October 21, 2025

1、背景

​ 一直使用自建CICD流水线,优点自然是灵活可变,当然也有路径依赖。缺点是维护难度较大。接触到fastlane,发现这流程可以有不一样的实现方式。

2、对比

传统的CICD更像是面向过程,一步步的指挥:依赖拉取、编译构建、产物归档、分发方式等步骤,详细的可以看我的另一篇《构建流水线实践》

Fastlane更像是面向对象,简单的方法就可以已完成一系列复杂的过程,更为简洁、高效。

2.1、fastlane介绍

Fastlane 是一个自动化工具,主要用于 iOS 和 Android 应用的构建、测试、部署发布。它简化了繁琐的发布流程,支持自动化处理如 证书管理、构建、打包、上传到 App Store / Google Play 等任务。通过一系列命令行工具和配置文件,开发者可以高效地管理应用的生命周期,节省大量的手动操作时间。

2.2、安装 Fastlane

首先,确保你已经安装了 Ruby,然后使用以下命令安装 Fastlane:

1
sudo gem install fastlane -NV

如果你使用的是 Homebrew,也可以通过它来安装:

1
brew install fastlane

2.3 初始化 Fastlane

在项目根目录中,运行以下命令来初始化 Fastlane 配置:

1
fastlane init

Fastlane 会引导你选择自动化工作流,例如 iOSAndroid,并创建相应的配置文件(如 Fastfile)。


2.4 配置 Fastfile

Fastfile 中,你可以定义多个自动化的 lane,每个 lane 对应一个任务。例如,你可以创建一个用于构建和上传到 App Store 的 lane。

示例 Fastfile 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
default_platform(:ios)

platform :ios do
  desc "自动化构建并上传到 App Store"
  lane :beta do
    increment_build_number  # 自动增加构建号
    build_app(scheme: "MyApp")  # 构建应用
    upload_to_testflight  # 上传到 TestFlight
  end

  desc "发布到 App Store"
  lane :release do
    increment_build_number
    build_app(scheme: "MyApp")
    upload_to_app_store  # 上传到 App Store
  end
end

解释:

  • increment_build_number:自动增加构建号。
  • build_app:构建应用程序。
  • upload_to_testflight:将构建上传到 TestFlight(可用于 beta 测试)。
  • upload_to_app_store:将构建上传到 App Store

2.5 执行 Fastlane

你可以通过运行相应的 lane 来执行这些自动化任务:

执行 beta 流程:

1
fastlane ios beta

执行 release 流程:

1
fastlane ios release

Fastlane 会按照 Fastfile 中定义的步骤,自动完成构建、上传、版本管理等工作。


2.6 集成到 CI/CD

你可以将 Fastlane 集成到持续集成(CI)工具中,例如 JenkinsGitLab CIGitHub Actions,以自动化整个构建和发布过程。

示例 GitHub Actions 配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
name: iOS Build and Deploy

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: macos-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Ruby
        uses: ruby/setup-ruby@v1

      - name: Install dependencies
        run: |
          gem install fastlane
          fastlane install_dependencies

      - name: Run Fastlane beta lane
        run: fastlane ios beta

2.6 常用命令

  • 初始化 Fastlanefastlane init
  • 运行指定 lanefastlane ios <lane_name>
  • 自动化测试fastlane test
  • 上传到 TestFlightfastlane ios beta
  • 上传到 App Storefastlane ios release

2.7 常见问题和解决

  • 证书问题:确保已经配置好开发证书和描述文件,Fastlane 会自动管理这些证书。
  • 权限问题:确保 Fastlane 有权限访问你的 macOS 或 CI 系统的 Keychain 和应用程序包。

3.总结

Fastlane 通过 Fastfile 配置自动化任务,从构建到发布,简化了 iOS 和 Android 应用的发布流程。它特别适用于 CI/CD 环境,能够显著提高开发和发布的效率。

如果你有更多需求或问题,Fastlane 官方文档提供了更详细的教程:Fastlane Documentation。