关于 github-actions
为 Flutter 项目提供 GitHub Actions CI/CD 流水线规范,涵盖质量检查、Android 与 iOS 构建及部署发布流程。适用于希望统一移动应用检查、签名和发布步骤的团队。
主要功能
- 01按顺序执行质量检查、构建与部署
- 02运行 Flutter 分析、格式检查和测试
- 03构建生产配置的 APK 与 IPA
- 04配置内部测试及分阶段发布
- 05管理版本、签名和 PR 要求
适用场景
- 01为 Flutter 项目建立 CI/CD 流水线
- 02在合并前验证代码质量和测试
- 03自动构建 Android 与 iOS 版本
- 04规范应用签名及发布审批
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dhruvanbhalara/ skills --skill github-actions安装后在 Claude Code 中输入/github-actions确认已加载。
详细介绍
GitHub Actions 流水线
- 使用 GitHub Actions 作为主要的 CI/CD 平台
- 在推送到
main以及所有拉取请求时触发 - 流水线 MUST 按以下顺序包含这些阶段:
阶段 1:质量门禁
- name: Analyze
run: flutter analyze --fatal-infos --fatal-warnings
- name: Format Check
run: dart format --set-exit-if-changed .
- name: Run Tests
run: flutter test --coverage
- 零警告策略:
--fatal-infos确保不会放过信息级问题 - 格式检查 MUST 使用
--set-exit-if-changed,以确保格式一致
阶段 2:构建
- name: Build APK
run: flutter build apk --flavor prod --dart-define-from-file=config/prod.json --release
- name: Build IPA
run: flutter build ipa --flavor prod --dart-define-from-file=config/prod.json --release --export-options-plist=ios/ExportOptions.plist
- 始终使用
--flavor prod和--dart-define-from-file=config/prod.json进行构建 - 使用单个
main.dart:不要传入-t lib/main_prod.dart
阶段 3:部署(仅在合并到 main 后)
- 上传到 Firebase App Distribution,供内部测试
- 上传到 Google Play Internal Track / TestFlight,供预发布测试
- 正式发布需要经过手动审批门禁
缓存策略
为提升构建速度,请在 GitHub Actions 工作流中缓存依赖项:
- name: Cache Flutter dependencies
uses: actions/cache@v4
with:
path: |
~/.pub-cache
.dart_tool
key: ${{ runner.os }}-pub-${{ hashFiles('**/pubspec.lock') }}
restore-keys: |
${{ runner.os }}-pub-
- name: Cache iOS/macOS Native dependencies (SPM & CocoaPods)
uses: actions/cache@v4
with:
path: |
~/Library/Caches/org.swift.swiftpm
~/Library/Developer/Xcode/DerivedData
ios/Pods
key: ${{ runner.os }}-native-${{ hashFiles('ios/Podfile.lock', '**/pubspec.yaml') }}
restore-keys: |
${{ runner.os }}-native-
版本策略
- 遵循语义化版本规范:
MAJOR.MINOR.PATCH+BUILD - 修复缺陷时递增
PATCH,添加功能时递增MINOR,进行不兼容变更时递增MAJOR - 在
pubspec.yaml中设置版本:version: 1.2.3+45 - CI 中的
+BUILD编号 MUST 自动递增(使用 CI 环境中的构建编号)
代码签名
- 将签名密钥和证书存储在 GitHub Secrets 中(绝不可存放在仓库中)
- Android:将密钥库作为 base64 编码的机密存储,并在 CI 中解码
- iOS:使用 App Store Connect API 密钥进行自动签名
- 绝不可提交
*.jks、*.keystore、*.p12或*.mobileprovision文件
PR 要求
- 所有 PR 在合并前 MUST 通过分析(0 条警告)、格式检查和测试
- 至少需要 1 人批准代码审查
- 在
main上启用分支保护:禁止直接推送,并要求通过状态检查
发布检查清单
- 已在
pubspec.yaml中递增版本 - 已更新 CHANGELOG.md
- CI 上所有测试均已通过
- Android 和 iOS 构建均成功
- 已在实体设备上使用生产 flavor 进行测试
- 已创建与版本匹配的 Git 标签(
v1.2.3)
评论
支持 Markdown