実例カタログ — 何ができる?(テスト・CodeQL・レビューBot・デプロイ・リリース…)

📖 このページのゴール:GitHub Actions で実際に何ができるのかを、実名つきのカタログでつかむ。大きく分けて「品質を守る(こわれてないか自動でチェック)」と「届ける(CD)(自動でデプロイ・リリース)」の2グループ。いま注目の自動化(CodeQL・レビューBot)もここで紹介します。 ← 目次・はじめにへもどる


ここまでで「on:(いつ) → jobs:(やること) → steps:(手順)」という形は読めるようになりました。このページは、その手順に何を載せられるのか——つまり「ベルトコンベアに流せる作業」のメニュー表です。🏭

ぜんぶ覚える必要はありません。「へえ、こんなことまで自動にできるんだ」と眺めるだけでOK。難易度の目印:🟢 基礎(まずはここ) / 🔧 応用(読み飛ばし可)


A. 品質を守る(こわれてないか、自動でチェック)

コードを上げるたびに、機械がこまめに検査してくれるグループです。人が見る前の「一次チェック」を自動化します。

  できること きっかけ 何が嬉しい?
① 🟢 テスト / lint / 型 / build を自動npm test lint tsc build PR・push こわれていたらマージをブロック(=必須チェック)。壊れたコードを本流に入れない
② 🟢 CodeQL(コードキューエル)=セキュリティスキャン PR・push・定期 コードの脆弱性(ぜいじゃくせい=バグの穴)を自動で発見。GitHub製でパブリックは無料
③ 🟢 コードレビューのBOT PRが来たとき PRに自動でレビューコメント人のレビュー前の一次チェックで見落としを減らす
④ 🟢 Dependabot(ディペンダボット) 自動・定期 依存ライブラリの更新脆弱性アラート自動でPRにしてくれる

① テスト・lint・型・build を自動(=必須チェック)

いちばん基本で、いちばん効きます。「PRが来たら自動でテスト」を設定し、その結果を必須チェックにしておくと、テストが通るまでマージできないようにできます。「自分の環境では動いたのに…」をチームから消せます。

② CodeQL = GitHub のセキュリティスキャン ⭐いま注目

CodeQL は、コードを読んで「ここ、攻撃に使われる穴があるよ」という脆弱性を自動で見つけるしくみ(コードスキャン)です。専門家でなくても、機械が安全の一次チェックをしてくれます。パブリックリポジトリは無料で使えます。

# .github/workflows/codeql.yml(ぐっと縮めた例)
name: "CodeQL"
on: [push, pull_request]
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: github/codeql-action/init@v3      # スキャンの準備
      - uses: github/codeql-action/analyze@v3    # 解析して結果を報告

1行ずつ読むと: on: で push と PR をきっかけにし → checkout でソースを取り → init でスキャンの下ごしらえ → analyze で実際に解析。見つかった脆弱性は GitHub の「Security」タブに表示されます。

③ コードレビューのBOT ⭐いま注目

PRを出すと、ロボットが先にレビューコメントを付けてくれます。バグの匂い・読みにくい所・改善案などを指摘するので、人間レビューの前の「下読み」になります。代表例:

BOT名 ざっくり何者?
CodeRabbit(コードラビット) PRの差分を要約+指摘してくれる定番のレビューBot
Sourcery(ソーサリー) コードの改善提案・リファクタ目線のコメントが得意
GitHub Copilot code review GitHub純正。PRに対しCopilotがレビューを付ける

🟢 ポイント:BOTは一次チェック。最終判断は人がします。「機械がまず拾う → 人は本質に集中」という分担です。

④ Dependabot = 依存ライブラリの番人

アプリはたくさんの外部ライブラリに支えられています。Dependabot は、それらに新しい版危険な脆弱性が出たら、自動で「更新しよう」というPRを作ってくれます。ほうっておくと古くなって危なくなる依存を、勝手に見張ってくれる番人です。


B. 届ける(CD)= 自動でデプロイ・リリース

CI(こわれてないか確認)が通ったら、今度はできあがったものを世の中・サーバー・ユーザーへ自動で届けるグループです。🚚

  できること きっかけ 何が嬉しい?
⑤ 🟢 デプロイ(公開・反映) push・マージ push したら本番に自動反映。手作業アップの事故をなくす
⑥ 🟢 リリース タグを push GitHub Release を自動作成+成果物を添付。配布がワンタッチ
⑦ 🔧 定期実行(cron=定期) 毎朝など 毎朝バッチ・リンク切れチェックなどをほっといても実行
⑧ 🔧 通知 実行のたび 結果を Slack / Discord へ自動連絡。失敗にすぐ気づける
⑨ 🔧 Issue / PR 自動化 起票・PR時 ラベル付け・テンプレ・自動クローズなどの雑務を肩代わり

⑤ デプロイ(公開・反映)

「コードを push したら、自動で本番に反映される」状態をつくれます。届け先はいろいろ:

届け先 やり方のイメージ
Vercel / Netlify GitHub と連携。push → 自動デプロイ(設定が手軽でフロント向き)
GitHub Pages actions/deploy-pages で公開。※このサイト自身もこれで動いています
自前のサーバー SSH / rsync でファイルを送る
Docker イメージ ビルドしたコンテナを push(レジストリへ)

🟢 デプロイ先の選び方は、姉妹編 コンピューティングの選択肢(動かす) と地続きです。「どこで動かすか」を決めたら、その先へ自動で届けるのがこの章。

⑥ リリース = タグを push したら自動で配布物をつくる

「バージョンを切る(例:v1.2.0 というタグを付けて push)」をきっかけに、GitHub Release を自動で作成し、アーティファクト(ビルド済みの成果物)を添付できます。

# タグを push したら Release を作る(縮めた例)
on:
  push:
    tags: ["v*"]              # v1.0.0 などのタグで起動
jobs:
  release:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: softprops/action-gh-release@v2   # Release を自動作成+ファイル添付
        with:
          files: dist/*       # 配布したい成果物

1行ずつ読むと: tags: ["v*"] で「vで始まるタグを push したら」起動 → checkout でソース取得 → action-gh-releaseGitHub Release を作りfiles: に書いた成果物を添付gh release create コマンドでも同じことができます。「リリース手順を毎回手でやる」事故が消えます。

⑦ 定期実行(cron=定期)

「毎朝9時にバッチ」「毎晩リンク切れチェック」のような時刻きっかけの自動実行です(schedule: = cron)。きっかけが人の操作ではなく時計になるのがポイント。誰も操作しなくても、決めた時間に勝手に走ります。

⑧ 通知(Slack / Discord へ)

ワークフローの結果(成功・失敗)を Slack や Discord に自動で送ることができます。とくに失敗にすぐ気づけるのが価値。「いつの間にか壊れていた」を防ぎます。

⑨ Issue / PR の自動化

ラベルの自動付け、Issue/PR のテンプレ運用、放置されたものの自動クローズなど、地味な運用の雑務を肩代わりさせられます。チームが増えるほど効いてきます。


🟢 ひとことで言うと

GitHub Actions でできることは、大きく 「品質を守る」(テスト必須チェック・CodeQL=セキュリティスキャン・レビューBot=CodeRabbit/Sourcery/Copilot・Dependabot)と、「届ける(CD)」(デプロイ・タグ→リリース+成果物添付・定期実行・通知)の2つ。まずは①のテスト自動化だけでも十分。いまどきは CodeQL とレビューBot で「人が見る前の安全&品質チェック」まで自動にできます。次は、その自動化を支える鍵(シークレット)の守り方へ。🗝

➡️ 次へ

次のページ:シークレットと安全 — 鍵・最小権限・他人のアクション・fork PR → ← 目次・はじめにへもどる