mcpField
G
github-actions

github-actions

github.com/dhruvanbhalaraクラウド・DevOps30197 回インストール9 週間前に更新
リポジトリ

github-actions について

Flutter プロジェクト向けに、GitHub Actions の CI/CD 手順をまとめたガイドです。品質チェック、Android・iOS のビルド、署名とリリースをチームで統一する際に役立ちます。

主な機能

  1. 01品質確認、ビルド、デプロイの順序を規定
  2. 02Flutter の解析、フォーマット、テストを実行
  3. 03本番設定の APK と IPA をビルド
  4. 04内部テストと段階的リリースを設定
  5. 05バージョン、署名、PR 要件を定義

活用シーン

  1. 01Flutter プロジェクトの CI/CD 構築
  2. 02マージ前のコードとテストの検証
  3. 03Android・iOS リリースのビルド
  4. 04アプリ署名とリリース承認の標準化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dhruvanbhalara/skills --skill github-actions

インストール後、Claude Code で/github-actionsを入力して読み込まれたか確認します。

詳細

GitHub Actions パイプライン

  • CI/CD プラットフォームの主要なものとして GitHub Actions を使用する
  • main への push とすべての Pull Request でトリガーする
  • パイプラインには、次のステージをこの順序で含める必要があります。

ステージ 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 により、情報レベルの問題が通過しないことを保証します
  • フォーマットチェックでは、一貫したフォーマットを強制するために --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
  • +BUILD 番号は CI で自動インクリメントする必要があります (CI 環境のビルド番号を使用する)

コード署名

  • 署名キーと証明書は GitHub Secrets に保存する (リポジトリには絶対に保存しない)
  • Android: キーストアを base64 エンコードされたシークレットとして保存し、CI でデコードする
  • iOS: 自動署名に App Store Connect API キーを使用する
  • *.jks、*.keystore、*.p12、*.mobileprovision ファイルを絶対にコミットしないこと

PR の要件

  • すべての PR はマージ前に合格する必要があります: 解析 (警告 0)、フォーマット、テスト
  • 少なくとも 1 件のコードレビュー承認を必須とする
  • main のブランチ保護: 直接プッシュを禁止し、ステータスチェックを必須とする

リリースチェックリスト

  • pubspec.yaml のバージョンを更新済み
  • CHANGELOG.md を更新済み
  • CI ですべてのテストが成功
  • Android と iOS の両方でビルドが成功
  • 本番フレーバーで実機テスト済み
  • バージョンに対応する Git タグを作成済み (v1.2.3)

コメント