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

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

这篇文章讲解一个流程,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...

相关推荐
EatFan7 小时前
Spring Boot 4 落地观察:从 yudao-cloud、matecloud、JPower 看国产脚手架的升级路线与迁移清单
java·spring boot·后端·spring cloud·微服务·后端开发·jdk 21
波力海苔夹心脆6759 小时前
C# 序列化与反序列化详解:System.Text.Json、Newtonsoft.Json、XmlSerializer 用法、特性选项与安全实践
经验分享·后端·c#·json·.net
JavaGuide10 小时前
NVIDIA 又开源了!这次给 AI Agent 加上权限管控
前端·后端
excel10 小时前
prisma 如何处理数据库竞态
前端·数据库·后端
IT_陈寒12 小时前
Java线程池这破玩意,差点让我周末加班排查到凌晨
前端·人工智能·后端
弈栈录13 小时前
Java AI 应用的异步化与高并发设计
java·后端·架构
凤山老林13 小时前
Spring Boot 集成 iText 7 实现动态 PDF 生成与电子签章:合同、报表场景实战
spring boot·后端·pdf·itext7·电子签章
孙启超13 小时前
【AI开发之Rust】第 19 课:UniFFI 导出核心能力
开发语言·后端·rust
ServBay14 小时前
基于Jev的浏览器Agent插件狂揽 21k star,3分钟教你解放双手
后端·aigc·ai编程