GitHub Actionsの基本をまとめて練習するための最小サンプルです。以下の3つを一つのリポジトリで体験できます。
ci:pushとpull_requestでnpm testを実行ai-review: PR差分をOpenAI APIへ送り、AIレビューコメントを投稿deploy:mainへマージされた静的サイトをGitHub Pagesへ公開
npm install
npm test静的サイトはブラウザで index.html を開くだけでも確認できます。簡易サーバーを使う場合は次のように起動します。
python3 -m http.server- このディレクトリを新しいGitHubリポジトリとして
mainブランチ付きでpushする - Repository Settings > Pages で Source を
GitHub Actionsにする - Repository Settings > Secrets and variables > Actions に
OPENAI_API_KEYを追加する - 必要なら Repository Variables に
OPENAI_MODELを追加する- 未設定時は workflow 側で
gpt-4.1-miniを既定値として使います
- 未設定時は workflow 側で
- Branch protection rules で
mainに対してciとai-reviewを required checks に設定する
pushとpull_requestで起動- Node.jsをセットアップ
npm installとnpm testを実行
pull_request_targetで起動- PRブランチのコードは実行せず、ベースブランチ上の安全なスクリプトだけを使う
- GitHub APIからPR差分を取得し、OpenAI Responses APIへ送る
- PRに要約と指摘をコメントする
high指摘があるか、安全に判定できない場合はworkflowを失敗させる
mainへの push で起動- 静的ファイルをGitHub Pagesへデプロイ
AIレビュー用スクリプトは、モデルに次の形式のJSONを返すよう求めます。
{
"summary": "PR全体の短い要約",
"findings": [
{
"severity": "high",
"file": "script.js",
"line": 10,
"title": "問題の要約",
"body": "なぜ危険かの説明"
}
],
"verdict": "fail"
}severity は high / medium / low、verdict は pass / fail を想定しています。
- AIレビューは人間レビューの補助です
- 差分が大きすぎる場合や解析に失敗した場合は、安全側に倒して
failにします pull_request_targetは強力なので、PRコードをcheckoutして実行しない構成にしています