用途
mobile-cicd 是一个移动端 CI/CD 技能,用于为 iOS 和 Android 应用搭建自动化构建、测试、签名与部署流水线。当需要设置移动构建流水线、自动化发布或管理签名时使用。官方描述为:Fastlane、面向移动端的 GitHub Actions、代码签名(iOS provisioning、Android keystores)、Beta 分发(TestFlight、Firebase App Distribution)以及应用商店提交。
主要能力
Fastlane
技能提供 iOS 与 Android 的 Fastfile 示例。
iOS Fastfile 定义了三条 lane:
- test:run_tests(scheme: "MyApp")
- beta:increment_build_number、match(type: "appstore", readonly: true)、build_app(scheme: "MyApp", export_method: "app-store")、upload_to_testflight(skip_waiting_for_build_processing: true),并通过 slack 发送通知
- release:match、build_app,以及 upload_to_app_store(submit_for_review: true、automatic_release: false、force: true)
Android Fastfile 定义了三条 lane:
- test:gradle(task: "test")
- beta:gradle(task: "bundleRelease") 并通过 upload_to_play_store 上传到 internal 轨道(aab 路径为 app/build/outputs/bundle/release/app-release.aab)
- release:通过 upload_to_play_store 将 internal 轨道提升到 production,rollout 为 "0.1"(注释标明为 10% 发布)
代码签名
iOS 使用 match:Matchfile 中配置 git_url、storage_mode("git")、type("appstore")、app_identifier("com.example.myapp");使用时通过 match(type: "development") 获取开发证书,match(type: "appstore") 获取分发证书。
Android 使用 keystore:通过 keytool 命令生成 keystore(-alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000),并要求安全存储,明确标注“绝不提交到 git”,使用 CI 密钥或加密存储。在 android/app/build.gradle 的 signingConfigs.release 中从环境变量读取 storeFile、storePassword、keyAlias、keyPassword。
GitHub Actions
技能提供一份 .github/workflows/mobile-ci.yml 示例,包含三个 job:
- test:ubuntu-latest,检出代码、setup-node(版本 20)、npm ci、npm test、npx tsc --noEmit
- build-ios:依赖 test,macos-latest,仅在 main 分支运行,安装 Ruby 3.2,执行 bundle install 与 bundle exec fastlane beta,并使用 MATCH_PASSWORD、FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD 等密钥
- build-android:依赖 test,ubuntu-latest,仅在 main 分支运行,安装 Java 17(temurin)与 Node 20,执行 npm ci 与 bundle exec fastlane beta,使用 KEYSTORE_PASSWORD、KEY_PASSWORD 等密钥
EAS Build(Expo)
提供 eas.json 示例,包含 cli 版本要求(>= 12.0.0),以及 development、preview、production 三种 build profile;submit.production 中配置 iOS 的 appleId、ascAppId 与 Android 的 serviceAccountKeyPath。命令示例包括:eas build --profile preview/production --platform all、eas submit --platform ios/android --latest,以及不经过商店审核的 OTA 更新 eas update --branch production --message "Bug fix"。
Beta 分发
技能以表格对比各平台分发渠道:
- 第一方:iOS 为 TestFlight,Android 为 Play Store internal track
- Firebase:两者均为 App Distribution
- Expo:两者均为 EAS internal distribution
App Store 优化(ASO)
列出若干建议:标题为“主关键词 + 品牌”(iOS 30 字符,Android 50 字符);副标题/短描述使用次要关键词;截图展示关键功能并使用设备边框;关键词字段仅 iOS 支持,逗号分隔且无空格;每个版本更新发布说明;回复评论以提升排名。
发布检查清单
清单包含:现有 CI 检查通过(新测试仅在用户要求时运行)、版本号已更新、构建号已递增、发布说明已撰写、UI 变更时截图已更新、QA 团队完成 Beta 测试、代码签名有效且未临近过期、隐私政策 URL 为最新、已检查应用审核指南合规性。
使用方式
技能本身以文档与代码示例形式提供,需结合项目实际配置 Fastlane(Fastfile、Matchfile)、GitHub Actions workflow、EAS(eas.json)以及签名配置来使用;示例中的方案名、应用标识、邮箱、App ID 等均为占位内容,需替换为实际值。密钥通过 CI secrets 或环境变量注入。
适用场景
搭建 iOS/Android 构建流水线、自动化 TestFlight 或 Play Store 内测与生产发布、管理 iOS 证书与 Android keystore、使用 GitHub Actions 或 EAS 构建与提交、进行应用商店元数据优化。
限制
资料未提供该技能的安装命令、依赖前提、支持平台范围、收费与价格信息、实际效果说明,相关内容暂未提供。示例代码为模板性质,落地时需按项目实际情况调整。