Bitrise 是一个专为移动开发设计的 CI/CD 平台,围绕现成的 Steps(用于构建、签名和发布 iOS 和 Android 应用的预配置模块)构建而成。根据 Bitrise,2024 的数据,该平台支持 超过 400 个现成的 Steps,并与 Xcode、Gradle、Fastlane、Firebase 和 App Store Connect 集成。
要点
Bitrise 是一个于 2016 年推出的 CI/CD 平台,完全专注于移动开发。与通用解决方案 GitHub Actions 和 GitLab CI 不同,Bitrise 从一开始就设计用于自动化 iOS 和 Android 应用的构建。该平台在云端运行,并提供自己的带有 macOS 和 Linux 的托管 runner。Bitrise 支持所有流行的移动技术栈:Swift、Kotlin、Flutter、React Native、Cordova 和 Xamarin。
Bitrise 的主要优势在于为典型的移动开发任务提供预配置的 Step 模板:Xcode 构建、Gradle 组装、Fastlane、Firebase Distribution、TestFlight、Google Play。 配置管道 通过可视化编辑器只需几分钟,YAML 配置会在 bitrise.yml 文件中自动生成。对于高级用户,还提供带有自动补全功能的 YAML 编辑器。
Bitrise 的架构基于两个关键概念:Workflow 和 Step。 Workflow 是定义管道的 Steps 序列。每个项目可以有多个 Workflow:primary(主要构建)、deploy(发布)、test(仅测试)。Workflow 由触发器启动:push、PR、标签或按计划执行。Workflow 可以从 Web 界面手动运行,这对于临时构建非常有用。
Step 是执行单个任务的原子模块。步骤可以在可视化编辑器中拖拽,更改其顺序和配置。 Bitrise 提供 用于 Xcode Archive & Export、Gradle Runner、CocoaPods Install、Firebase Distribution、Slack 通知的 Steps。社区也创建 Steps — 它们可以通过 Step Library 获取。每个 Step 都有必填和可选的输入参数,以及可供后续 Steps 使用的输出变量。
Bitrise 支持管道的概念 — 将多个 Workflow 合并为一个管道。 管道可以包括 所有平台的主要构建以及单独的部署和测试工作流。这样可以创建复杂的 CI/CD 流程,其中一个构建触发另一个构建。Bitrise Stacks 定义了 runner 上预安装的软件:Xcode、Android SDK、Flutter、Node.js 和其他工具。
Bitrise 与 GitHub、GitLab、Bitbucket 和 Azure DevOps 集成。 在连接 仓库时,Bitrise 会自动检测项目类型(iOS、Android、Flutter)并提供 Workflow 模板。对于私有仓库,Bitrise 通过 OAuth 或 SSH 密钥请求访问。支持将多个仓库连接到一个应用。
连接后,Bitrise 在仓库中创建一个 webhook,用于在 push 和 PR 时自动启动构建。 每个构建 都会获得一个唯一的编号、日志和工件。界面允许查看构建历史、比较更改和重新启动失败的构建。Bitrise 还支持计划构建(用于定期夜间构建)以及与 Jira 集成以跟踪提交。
iOS 的代码签名是 CI/CD 中最困难的任务之一,而 Bitrise 将其解决得非常简单。 平台存储 证书和配置文件以加密形式,在构建前自动将其安装到相应的 keychain 中,并导出已签名的 IPA。Certificate and Profile Installer Step 从 Bitrise 存储下载文件并配置 Xcode。支持 Development、AdHoc、AppStore 和 Enterprise 证书类型。
要在 App Store Connect 上发布,Bitrise 提供通过 Xcode Archive & Export 上传 IPA 的 Steps。 Google Play 发布 使用 Gradle Runner 通过 Keystore 签名,然后 APK/AAB 通过 Google Play Deploy Step 上传到 Google Play Console。对于 Firebase App Distribution,只需指定 Firebase Token 和测试人员组即可。Bitrise 在每次发布前自动更新构建版本(版本号和构建号)。
证书在 Web 界面的 Code Signing 部分上传:带有私钥的 P12、配置文件(.mobileprovision)、用于 Android 的 Keystore(.jks/.keystore)。 Bitrise 自动 在每次运行 Workflow 时将 iOS 证书安装到 keychain 中,并导出已签名的应用。对于 Android,只需上传 Keystore 文件 — Bitrise 在构建时通过环境变量将其传递给 Gradle。
让我们看一个 Flutter 应用的 Workflow,它构建并发布 iOS 和 Android 的构建版本。 Bitrise 自动 检测 Flutter 项目并提供相应的 Steps。Workflow 包括 Flutter 安装、pub-cache 缓存、构建、测试和部署。iOS 构建还需要代码签名证书,Bitrise 会自动加载这些证书。
在构建 Flutter 应用时,Bitrise 支持针对不同平台的单独配置。 Android 构建 在带有 Flutter SDK 的 Linux runner 上执行,iOS 在 macOS runner 上执行。Workflow 可以包含条件 Steps:build_android 和 build_ios,它们仅在相应的平台上运行。对于 React Native 项目,Bitrise 提供类似的 Steps 集,包含 npm/nvm 和 Metro bundler。
format_version: 13
default_step_lib_source: https://github.com/bitrise-io/bitrise-steplib.git
trigger_map:
- push_branch: main
workflow: primary
workflows:
primary:
steps:
- activate-ssh-key@4:
run_if: true
- git-clone@8: {}
- flutter-installer@0:
inputs:
- version: 3.24.0
- flutter-build@0:
inputs:
- platform: both
- ios_output_type: archive
- deploy-to-bitrise-io@2: {}
构建后,可以为 iOS 和 Android 添加 Firebase App Distribution Step。 Step 接受 firebase_token、app_id 和 testers_group。Bitrise 从 Secrets 中替换值 — 安全存储令牌确保它们不会出现在日志中。
- firebase-app-distribution@1:
inputs:
- firebase_token: $FIREBASE_TOKEN
- app_id: $FIREBASE_IOS_APP_ID
- testers_group: qa-team
- release_notes: |
Build $BITRISE_BUILD_NUMBER
正确管理机密数据是 CI/CD 流程安全的基础。 Bitrise Secrets 经过加密,保存后无法读取。在创建新应用时,Bitrise 建议从另一个项目导入 secrets 或手动设置。对于大型团队,提供了 Environment Groups 功能 — 对一组应用的变量和 secrets 进行集中管理。
Bitrise 为机密数据提供内置的 Secrets 存储:API 密钥、Firebase 令牌、Keystore 密码、Apple ID。 Secrets 的设置 在 Web 界面中以键值对的形式进行,并在构建日志中被屏蔽。在应用级别和 Workflow 级别可用。Secrets 保存后无法读取 — 只能覆盖。
Environment Variables(没有 Secret 标签)用于配置:Xcode 版本、项目路径、构建方案。 Bitrise 环境变量(BITRISE_BUILD_NUMBER、BITRISE_APP_TITLE)提供有关构建的元信息。Secrets 在存储时加密,仅在 Workflow 执行期间在 runner 上解密。对于变量的分组管理,Bitrise 支持 Environment Groups — 可同时应用于多个应用的变量集。
通过 Bitrise 管理 iOS 证书需要特别注意。 平台自动 在构建前将 P12 和配置文件安装到系统 keychain 中。对于 Android,使用上传到 Code Signing 部分的 Keystore 文件。每个证书文件都以加密形式存储,仅在构建期间解密。
- google-play-deploy@3:
inputs:
- package_name: com.example.app
- service_account_json_key: $SERVICE_ACCOUNT_KEY
- app_file: $BITRISE_APK_PATH
Bitrise 提供不同的技术栈用于构建 — 预安装了工具和 SDK 的镜像。 可用的技术栈 包括 Xcode(版本 14、15、16 附带 iOS SDK 17、18)、Android(具有不同版本的 SDK 和 NDK)、Flutter、React Native 和 Kotlin Multiplatform。每个技术栈都有预安装工具和版本的描述。
技术栈的选择会影响构建时间和与项目的兼容性。 Bitrise 定期更新 技术栈,添加新版本的工具。可以在 bitrise.yml 中固定特定版本的技术栈,以避免平台更新时出现意外更改。对于自定义依赖项,使用 Script Step 在主构建前安装所需的包。Bitrise 还支持 Linux 技术栈的 Docker 镜像,允许为 Android 构建使用自定义环境。
常见问题
Bitrise 提供 免费计划,每月 90 分钟构建时间和一个并发构建。Developer(每月 79 美元)包含 3000 分钟、最多 5 个并发构建和所有集成。Enterprise — 定制价格。
Bitrise 支持 iOS(Swift, Objective-C)、Android(Kotlin, Java)、Flutter、React Native、Cordova、Ionic 和 Xamarin。每个平台都有预安装的工具和 Workflow 模板。
Bitrise 提供 macOS runner 用于 iOS 构建,无需额外配置。平台自行管理 macOS 基础设施 — runner 根据应用的技术栈自动选择。
Bitrise 以 加密形式存储证书,并通过 Certificate and Profile Installer Step 在构建前自动将其安装到 keychain 中。对于 Android 类似 — Keystore 上传后由 Gradle 在签名时使用。
是的,Bitrise 通过 Script Step(bash 脚本)和来自 GitHub 的自定义 Step Library 支持 自定义 Steps。您还可以根据 Bitrise 文档创建自己的 Step 并将其发布到 Step Library 中。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。