mcpField
G
github-actions

github-actions

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

github-actions について

GitHub Actions のワークフロー設定と CI/CD 自動化パターンを扱う、コーディングエージェント向けガイドです。ビルド、テスト、リリースに必要なトリガー、ジョブ、キャッシュ、セキュリティを説明します。

主な機能

  1. 01イベントトリガーの設定
  2. 02逐次・並列ジョブの編成
  3. 03マトリックスビルドの実行
  4. 04依存関係のキャッシュとアーティファクト管理
  5. 05権限とシークレットの設定

活用シーン

  1. 01コードテストの自動化
  2. 02アプリのデプロイやリリースの自動化
  3. 03定期タスクや依存関係更新の実行
  4. 04ワークフローの権限とセキュリティの確認

インストール

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

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

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
caching-and-artifacts.md
matrix-and-reusable.md
security-and-secrets.md
workflow-syntax.md

詳細

GitHub Actions

概要

GitHub Actions は、GitHub リポジトリから直接、ビルド、テスト、デプロイのパイプラインを自動化する CI/CD プラットフォームです。ワークフローは .github/workflows/ 内の YAML ファイルで、プッシュ、プルリクエスト、スケジュール、手動実行などのイベントをトリガーとして実行されます。各ワークフローには、GitHub ホステッドまたはセルフホストのランナーで実行される 1 つ以上のジョブが含まれます。

使用する場面: 自動テスト、継続的デプロイ、リリースの自動化、スケジュールされたタスク、マルチプラットフォームビルド、依存関係の更新、コンテナの公開、コード品質チェック、セキュリティスキャン。

使用しない場面: 長時間稼働するサービス(適切なホスティングプラットフォームを使用)、ランナーの制限を超える高負荷な計算タスク(ジョブのタイムアウトは 6 時間)、実行間で永続的な状態を必要とするタスク(外部ストレージを使用)、リアルタイムのイベント処理(サーバーを使った Webhook を使用)。

クイックリファレンス

パターン構文/アクション主なポイント
プッシュトリガーon: push: branches: [main]ブランチ、パス、タグでフィルター
PR トリガーon: pull_request: types: [opened, synchronize]デフォルトは opened、synchronize、reopened
スケジュールトリガーon: schedule: - cron: '0 6 * * 1'UTC のみ、最小間隔は 5 分
手動トリガーon: workflow_dispatch: inputs:手動実行用に型付き入力を定義
ジョブの依存関係needs: [build, test]ジョブを順次または並列で実行
条件付きジョブif: github.ref == 'refs/heads/main'式ベースでジョブ/ステップをフィルター
マトリックス戦略strategy: matrix: node: [18, 20, 22]組み合わせごとにジョブを生成
依存関係キャッシュactions/cache@v5ハッシュベースのキーと restore-keys によるフォールバック
キャッシュ付きセットアップactions/setup-node@v6 with cache: 'pnpm'パッケージマネージャー向けの組み込みキャッシュ
アーティファクトのアップロードactions/upload-artifact@v4ジョブ間でデータを共有する、または出力を保持する
アーティファクトのダウンロードactions/download-artifact@v4以前のジョブからアーティファクトを取得
再利用可能なワークフローuses: ./.github/workflows/reusable.ymlworkflow_call トリガーで呼び出す
コンポジットアクションaction.yml with using: composite複数のステップを 1 つのアクションにまとめる
同時実行concurrency: group: ${{ github.ref }}重複した実行をキャンセルまたはキューに追加
環境シークレット${{ secrets.API_KEY }}リポジトリ、組織、または環境にスコープを設定
OIDC 認証permissions: id-token: writeクラウドプロバイダー向けの短命トークン
ステップの出力echo "key=value" >> "$GITHUB_OUTPUT"ステップ間およびジョブ間でデータを渡す
サービスコンテナservices: postgres: image: postgres:16統合テスト用のサイドカーコンテナ
タイムアウトtimeout-minutes: 30ハングしたジョブやステップを速やかに失敗させる
アテステーションactions/attest-build-provenance@v3サプライチェーン向けの SLSA ビルド来歴

式とコンテキスト

コンテキスト例説明
githubgithub.ref_name, github.shaイベントのメタデータ、リポジトリ情報、実行者
envenv.NODE_ENV現在のスコープの環境変数
secretssecrets.API_KEY暗号化されたシークレット(ログではマスクされます)
inputsinputs.environmentワークフローのディスパッチまたは再利用可能な入力
matrixmatrix.node現在のマトリックスの組み合わせ値
stepssteps.build.outputs.version前のステップからの出力
needsneeds.prepare.outputs.tag依存するジョブからの出力
runnerrunner.os, runner.archランナー環境の情報
varsvars.DEPLOY_URLリポジトリまたは組織の構成変数

よくある間違い

間違い正しいパターン
古いメジャーバージョンのアクションを使用する現行のメジャーバージョン(@v6)またはコミット SHA に固定する
persist-credentials: false の指定漏れカスタムトークンまたは OIDC を使用する場合は、チェックアウト時に設定する
ワークフローレベルで広範な permissions を設定するワークフローレベルで permissions: {} を設定し、ジョブごとに権限を付与する
依存関係ファイルのハッシュを含まないキャッシュキーキャッシュキーに hashFiles('**/pnpm-lock.yaml') を含める
if: 条件内でシークレットを使うシークレットは if: 式で直接使用できません
pull_request_target を不用意に使うpull_request_target から書き込み権限で PR のコードを実行しない
古い実行をキャンセルしないcancel-in-progress: true を指定した concurrency を使用する
構造化データを単一のシークレットとして保存するログを適切にマスキングするため、値ごとに個別のシークレットを作成する
SHA で固定せずにアクションのタグを参照するサプライチェーンの安全性を確保するため、サードパーティ製アクションを完全なコミット SHA に固定する
スクリプト内でランナーの OS をハードコードするクロスプラットフォーム互換性のために runner.os コンテキストを使用する
restore-keys を指定せずに actions/cache を使用する部分的に一致するキャッシュを取得できるよう、常に restore-keys を指定する
run: ブロック内でユーザー入力を展開するスクリプトインジェクションを防ぐため、信頼できない値は env: 経由で渡す
ジョブに timeout-minutes を設定しないハングしたプロセスを速やかに失敗させるため、明示的なタイムアウトを設定する
スコープを限定せずに always() を使うステータスチェックと組み合わせる:if: always() && steps.x.outcome == 'success'

委任

  • ワークフローのデバッグ:Explore エージェントを使用してワークフロー実行ログを調査します
  • セキュリティ監査:Task エージェントを使用して権限とシークレットの使用状況を確認します
  • コードレビュー:ワークフローの PR レビューを code-reviewer エージェントに委任します

参考資料

コメント