mcpField
G
github-actions

github-actions

github.com/dhruvanbhalara云与 DevOps30197 次安装9 周前更新
代码仓库

关于 github-actions

为 Flutter 项目提供 GitHub Actions CI/CD 流水线规范,涵盖质量检查、Android 与 iOS 构建及部署发布流程。适用于希望统一移动应用检查、签名和发布步骤的团队。

主要功能

  1. 01按顺序执行质量检查、构建与部署
  2. 02运行 Flutter 分析、格式检查和测试
  3. 03构建生产配置的 APK 与 IPA
  4. 04配置内部测试及分阶段发布
  5. 05管理版本、签名和 PR 要求

适用场景

  1. 01为 Flutter 项目建立 CI/CD 流水线
  2. 02在合并前验证代码质量和测试
  3. 03自动构建 Android 与 iOS 版本
  4. 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