Fastlane 结合 AppUploader 来实现 CI 集成自动化上架

在做 iOS 自动化发布时,很多团队会用 Fastlane 完成打包和版本管理。但当构建环境不在 Mac,或者需要跨平台上传 IPA 时,仅依赖 deliverpilot 就会遇到环境限制。

这篇文章讲解一个流程,Fastlane 负责构建与版本管理,AppUploader 负责跨平台上传。


场景说明

假设当前项目具备以下条件:

  • 代码托管在 Git
  • 使用 Fastlane 管理构建
  • 构建完成生成 IPA
  • 上传环节需要在 Linux 或 Windows 服务器执行

目标是让整个流程可以在 CI 里跑通。


一、用 Fastlane 负责构建

在项目根目录执行:

csharp 复制代码
fastlane init

选择 iOS 应用。

编辑 Fastfile

php 复制代码
lane :build_release do
  increment_build_number(
    xcodeproj: "YourApp.xcodeproj"
  )

  build_app(
    scheme: "YourScheme",
    export_method: "app-store",
    output_directory: "./build",
    output_name: "release.ipa"
  )
end

这里明确指定:

  • export_method: "app-store"
  • 输出目录固定为 ./build

执行:

复制代码
fastlane build_release

此时可以在 build/ 目录看到 release.ipa

构建阶段由 Fastlane 完成,不涉及上传。


二、处理证书问题

Fastlane 可以用 match 管理证书,但如果构建服务器没有 macOS 钥匙串,证书同步会成为障碍。

这里可以使用 AppUploader(开心上架) 的证书管理功能:

  • 登录 Apple 账号
  • 生成 distribution 证书
  • 下载 p12 文件
  • 下载 App Store 类型描述文件

将 p12 与 mobileprovision 文件加入 CI 环境。

在 Mac 构建机中导入证书即可完成签名。

如果构建在 Windows 或 Linux,则只需保证 IPA 是已签名版本。


三、用 AppUploader 命令行上传 IPA

当 IPA 已生成,不一定需要 macOS 才能上传。

AppUploader 提供命令行版本 appuploader_cli

上传命令示例:

diff 复制代码
appuploader_cli -u appleid@example.com \
-p xxxx-xxxx-xxxx-xxxx \
-c 2 \
-f build/release.ipa

参数说明:

  • -u Apple 开发者账号
  • -p 专用密码(App 专用密码)
  • -c 上传通道(1 为老通道,2 为新通道)
  • -f IPA 路径

把这条命令加入 CI 脚本即可。

例如在 GitLab CI:

bash 复制代码
script:
  - fastlane build_release
  - appuploader_cli -u $APPLE_ID -p $APP_PWD -c 2 -f build/release.ipa

这样构建和上传被拆分为两个明确阶段。


四、上传后的验证

上传成功后:

  • 登录 App Store Connect
  • 查看"构建版本"
  • 确认版本号与 Build 号正确

如果构建未出现:

  • 检查 Bundle ID 是否一致
  • 检查是否使用了正确 Apple 账号

如果出现 401 错误:

  • 检查是否使用了 App 专用密码
  • 确认账号开启了双重认证

五、结合实际项目的完整执行顺序

在 CI 中执行顺序建议如下:

  1. 拉取代码
  2. Fastlane 构建 IPA
  3. 验证输出文件存在
  4. 调用 appuploader_cli 上传
  5. 输出日志

可以增加一段简单的文件存在校验:

bash 复制代码
if [ ! -f build/release.ipa ]; then
  echo "IPA not found"
  exit 1
fi

避免上传阶段报路径错误。


六、什么时候需要这种组合方式?

以下情况适合 Fastlane + AppUploader 组合:

  • 构建在 Mac,但上传在 Linux 服务器
  • 团队部分成员使用 Windows
  • 希望上传阶段独立于 Xcode
  • 不希望在 CI 里维护 macOS 钥匙串

这种分离式结构让构建与上传职责清晰。


七、流程中每个工具的角色

阶段 工具
版本号管理 Fastlane
构建与签名 Fastlane + Xcode
证书生成 AppUploader
描述文件生成 AppUploader
IPA 上传 AppUploader CLI
审核提交 App Store Connect

这样可以避免单点依赖。


Fastlane 与 AppUploader 职责分工:

  • Fastlane 负责构建与版本控制
  • AppUploader 负责证书生成与跨平台上传

当两者结合使用时,可以形成一条稳定的自动化发布路径。

参考链接:www.appuploader.net/tutorial/zh...

相关推荐
鱼人2 小时前
Python argparse 入门到实战:命令行参数解析全指南
后端
大魔王7192 小时前
进程线程和协程一
后端
icebreaker3 小时前
Mokup:构建工具友好的可视化 Mock 工具
前端·javascript·后端
无心水3 小时前
2025,一路有你!
java·人工智能·分布式·后端·深度学习·架构·2025博客之星
AskHarries3 小时前
skills-lc-cli:3 天做出来的一个小工具,结果自己每天都在用
后端
小夏coding3 小时前
简易的查询与缓存的统一执行器
后端
日月云棠4 小时前
让JDK 8成就Web神话的核心特性
后端
李广坤4 小时前
设计模式的本质:隔离变化
后端·设计模式