name: base-github-action description: >- GitHub Actions のワークフロー作成・更新・レビュー時に使用する。 トリガー・並行制御・キャッシュなどの設計、SHA ピン留めと最小権限のセキュリティ、 Workload Identity Federation による GCP キーレス認証、Cloud Run デプロイ、 Terraform CI/CD パイプラインのリファレンスを提供する。 user-invocable: false
GitHub Actions パターン
GitHub Actions で CI/CD パイプラインを構築するためのリファレンススキル。
常に適用する原則を本文に置き、トピックごとの詳細は ./references 配下のファイルへ分離する。
適用タイミング
.github/workflows/配下のワークフローの作成・更新・レビュー- CI(lint・test・ビルド)とデプロイパイプラインの設計
- GitHub Actions から Google Cloud への認証(Workload Identity Federation)の構成
- Cloud Run へのコンテナデプロイの自動化
- Terraform の plan / apply パイプラインの構築
- ワークフローのセキュリティ監査・高速化・コスト削減
常に適用する原則
- 長期保存の認証情報を持たない — クラウドへの認証は OIDC(GCP なら WIF)で 短寿命トークンを使う。サービスアカウントキーを GitHub Secrets に置かない。
permissionsは最小化する — ワークフローレベルでpermissions: {}に落とし、 ジョブ単位で必要な権限だけを付与する。- サードパーティアクションはコミット SHA にピン留めする — タグは差し替え可能。 バージョンはコメントで併記し、更新は Dependabot / Renovate に任せる。
- イベントデータを
run:へ直接展開しない — PR タイトル等は攻撃者が制御できる。 必ず環境変数を経由する。 - 全ジョブに
timeout-minutesを明示する — デフォルトの 360 分はハング時の課金リスク。 - CI はキャンセル、デプロイは直列化 —
concurrencyで CI はcancel-in-progress: true、 デプロイ・apply はfalseにする。 - 承認されたコードのみを適用する — デプロイは main へのマージ後にのみ実行し、 本番は Environment の保護ルール(必須レビュアー・ブランチ制限)で守る。
リファレンスの選択
作業対象のトピックに対応するリファレンスを読み込む。複数トピックにまたがる場合は該当分すべてを読む。
| トピック | パス |
|---|---|
| トリガー・concurrency・キャッシュ・matrix・再利用・Environments | ./references/workflow-basics.md |
SHA ピン留め・GITHUB_TOKEN・インジェクション・pull_request_target |
./references/security.md |
| WIF のセットアップ・属性条件・Direct WIF / SA 借用・auth アクション | ./references/gcp-auth.md |
| Cloud Build オフロード・Artifact Registry・Cloud Run デプロイ・IAM | ./references/gcp-deploy.md |
| GCS バックエンド・環境分離・plan / apply 分離パイプライン | ./references/terraform.md |
クイックリファレンス
| パターン | 使うケース |
|---|---|
permissions: {} + ジョブ単位付与 |
すべてのワークフロー |
uses: org/action@<full-sha> # vX.Y.Z |
サードパーティアクションの利用 |
id-token: write + google-github-actions/auth@v3 |
GCP へのキーレス認証(WIF) |
WIF の --attribute-condition |
リポジトリ・ブランチ単位のアクセス制限(必須) |
gcloud builds submit --suppress-logs |
コンテナビルドの Cloud Build オフロード |
google-github-actions/deploy-cloudrun@v3 |
Cloud Run への新リビジョン展開 |
concurrency + cancel-in-progress: false |
デプロイ・terraform apply の直列化 |
environment: production |
本番デプロイの承認ゲート・環境別シークレット |
paths: フィルター |
モノレポ・環境ディレクトリごとの選択的実行 |
| plan を PR コメント・apply は main マージ後 | Terraform の GitOps フロー |
環境変数経由の ${{ github.event.* }} 参照 |
スクリプトインジェクションの防止 |
関連
- スキル: base-cloudrun — Cloud Run 本体の設計・設定、 base-docker — コンテナイメージのテンプレート
- リファレンス: GitHub Actions secure use、 google-github-actions/auth、 WIF best practices、 Terraform on Google Cloud best practices