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

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

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


场景说明

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

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

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


一、用 Fastlane 负责构建

在项目根目录执行:

复制代码
fastlane init

选择 iOS 应用。

编辑 Fastfile

复制代码
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

上传命令示例:

复制代码
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:

复制代码
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. 输出日志

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

复制代码
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 负责证书生成与跨平台上传

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

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

相关推荐
天空属于哈夫克32 小时前
企微外部群自动化触达,破解私域增长难题
运维·自动化·企业微信
贤泽2 小时前
Android 15 AOSP Notification分析
android
之歆2 小时前
Linux 各种软件安装
linux·运维·服务器
蜡笔小炘2 小时前
Haproxy -- 动/静/混合态算法实验
运维·服务器·vim·haproxy
政安晨2 小时前
政安晨【人工智能项目随笔】OpenClaw(AI人工智能助手)集成SMB服务器实现自动化音效素材处理实战
运维·自动化·自动化运维·samba·ai-agent·openclaw·音频素材openclaw处理
乾元3 小时前
合规自动化:AI 在资产发现与数据合规治理中的“上帝之眼”
运维·网络·人工智能·安全·web安全·机器学习·安全架构
云游云记3 小时前
vue2 vue3 uniapp (微信小程序) v-model双向绑定
微信小程序·uni-app·vue
特立独行的猫a3 小时前
腾讯Kuikly多端框架(KMP)实战:轮播图的完整实现
android·harmonyos·轮播图·jetpack compose·kuikly
没有bug.的程序员3 小时前
云原生 CI/CD 深度实战:GitLab CI 与 Jenkins 协同内核、Pipeline 自动化精髓与容器化交付指南
ci/cd·云原生·pipeline·gitlab·jekins