github-actions について
Flutter プロジェクト向けに、GitHub Actions の CI/CD 手順をまとめたガイドです。品質チェック、Android・iOS のビルド、署名とリリースをチームで統一する際に役立ちます。
主な機能
- 01品質確認、ビルド、デプロイの順序を規定
- 02Flutter の解析、フォーマット、テストを実行
- 03本番設定の APK と IPA をビルド
- 04内部テストと段階的リリースを設定
- 05バージョン、署名、PR 要件を定義
活用シーン
- 01Flutter プロジェクトの CI/CD 構築
- 02マージ前のコードとテストの検証
- 03Android・iOS リリースのビルド
- 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)
コメント
Markdown 対応