GitHub Actions のしくみ — トリガー → ジョブ → ステップ
📖 このページのゴール:GitHub Actions(ギットハブ・アクションズ) が「○○したら → △△する」のしくみだと腹落ちすること。中身が
on(トリガー) →jobs(ジョブ) →steps(ステップ) という形でできていること、処理を動かす ランナー(貸しパソコン) のこと、そして「よく使うきっかけ(トリガー)」を、たとえと表でつかみます。 ← 目次・はじめにへもどる
🟢 GitHub Actions とは?
GitHub Actions は、GitHub に最初から組み込まれている自動化のしくみです。別のサービスを契約したり、サーバーを用意したりする必要はありません。
- 🟢 GitHub に組み込み:リポジトリ(コードの置き場)にそのまま付いてくる。追加の道具はいりません。
- 🟢 無料枠あり:追加費用なしで始められます(パブリックなリポジトリは標準ランナーが無料。プライベートも毎月の無料分があります。くわしくは第6章)。
- 🟢
.github/workflows/の YAML に書く:何を自動でやるかは、リポジトリの中の.github/workflows/(ドット・ギットハブ/ワークフローズ) というフォルダに、YAML(ヤムル)=設定を書くテキストの形式で置きます。このファイル1つが ワークフロー=自動でやる作業の手順書 です。
📁 置き場所のイメージ
あなたのリポジトリ/ └─ .github/ └─ workflows/ ├─ ci.yml ← 手順書その1(例:テストする係) └─ release.yml ← 手順書その2(例:リリースする係)
🤖 たとえ:「○○したら △△する係」
GitHub Actions は、GitHub の中に住んでいる「○○したら △△する係」 だと思ってください。
🤖 「push されたら テストする」 🤖 「PR(プルリクエスト)が来たら チェックする」 🤖 「毎朝9時に バッチを動かす」 🤖 「タグを付けたら リリースを作る」
あなたは「いつ(きっかけ)」と「何をするか(手順)」を1回決めて置いておくだけ。あとは係が勝手に・毎回・同じようにやってくれます。手で覚えておく必要も、押し忘れる心配もありません。
🟢 しくみ:on → jobs → steps
ワークフロー(手順書)は、大きく 3つの部品 でできています。この3段だけ覚えれば、だいたい読めます。
┌─ ワークフロー(手順書1つ = YAMLファイル1つ)──────────────┐
│ │
│ on: ← ① いつ動かす?(トリガー=きっかけ) │
│ 例:push されたら │
│ │
│ jobs: ← ② 何をする?(ジョブ=ひとまとまりの仕事) │
│ ┌────────────────────────────────────────────────┐ │
│ │ test ジョブ (runs-on: ランナーの上で動く) │ │
│ │ steps: ← ③ 手順(ステップ=1つ1つの作業) │ │
│ │ 1. ソースを取ってくる │ │
│ │ 2. Node を用意する │ │
│ │ 3. npm test を実行する │ │
│ └────────────────────────────────────────────────┘ │
│ │
└────────────────────────────────────────────────────────────┘
3段を表にすると、こうです。
| 段 | 名前(ふりがな) | やさしく言うと | キーワード |
|---|---|---|---|
| ① | トリガー(on) |
いつ動かすか=きっかけ | on: |
| ② | ジョブ(jobs) |
何をするか=ひとまとまりの仕事 | jobs: |
| ③ | ステップ(steps) |
ジョブの中の 1手順 | steps: |
🟢 読む順番もこの順:手順書を見たら、まず「いつ動く?(
on)」→「どんな仕事がある?(jobs)」→「各仕事の手順は?(steps)」と上から追えば OK。
🔧 ランナー=処理を動かす「使い捨ての貸しパソコン」
各ジョブは、宙に浮いて動くわけではありません。どこかのパソコンの上で動きます。その「動かす場所」が ランナー(runner) です。
- 🟢 ランナー=処理を動かす貸しパソコン。GitHub が貸してくれる、まっさらで使い捨てのパソコンです。
- ジョブごとに
runs-on:(ランズ・オン)でどんなパソコンを借りるかを指定します(例:ubuntu-latest=最新の Ubuntu Linux)。 - 🟢 使い捨て:ジョブが終わると借りたパソコンはまっさらに消えます。だから毎回同じきれいな環境で動く=「自分のパソコンでは動くのに…」を防げます。
- 🔧 ジョブが複数あると、それぞれ別のランナーで並行に動かせます(だから速い)。
on: push されたら
│
▼
┌─ test ジョブ ─────────┐ ┌─ build ジョブ ────────┐
│ runs-on: ubuntu-latest│ │ runs-on: ubuntu-latest│ ← 別々の貸しパソコン
│ (貸しパソコンA) │ │ (貸しパソコンB) │ で並行に動ける
└───────────────────────┘ └───────────────────────┘
🟢 ステップの中身は2種類だけ:uses と run
ジョブの中の各ステップ(手順)は、つきつめると 2通りのどちらか です。
| 書き方 | 何をする? | たとえ |
|---|---|---|
uses: |
既製のアクション(部品)を使う | レゴの完成パーツをはめる |
run: |
シェルのコマンドをそのまま実行(例:npm test) |
自分で手を動かす |
🧩 アクションと Marketplace(レゴの部品のたとえ)
uses: で呼び出す アクション(action)=再利用できる既製の部品 です。「ソースを取ってくる」「Node を用意する」のようなよくある作業を、自分で書かずにそのまま使えるようにしたもの。
🧩 アクション=レゴの部品。1個1個は小さな部品でも、組み合わせれば手順書ができあがる。自分で全部を一から作らなくていいのがうれしいところ。
定番の部品(公式アクション)はこんな感じです。
| アクション | やってくれること |
|---|---|
actions/checkout |
リポジトリのソースコードを取ってくる(たいてい最初のステップ) |
actions/setup-node |
Node.js を用意する(バージョン指定もできる) |
actions/upload-artifact |
ビルドした成果物を保存する(くわしくは第3章) |
🟢 こうした部品は GitHub Marketplace(マーケットプレイス)=アクションの市場 に数千種類公開されています。やりたいことを検索して、見つけて、uses: で呼ぶ——という流れです。
⚠️ ちいさな注意:他人の作った部品を使うときは「信頼」が要ります。安全な使い方(バージョンの固定など)は第5章でくわしく扱います。今は「部品を借りて組み立てる」というイメージだけで OK。
🟢 よく使うトリガー(きっかけ)早見表
「いつ動かすか」を決めるのが トリガー(on:) です。よく使うものを表にまとめます。まずは push と pull_request の2つを押さえれば十分です。
トリガー(on:) |
いつ動く? | よくある使い道 | 難易度 |
|---|---|---|---|
push |
コードを push したとき | 上げるたびに自動テスト/ビルド | 🟢 |
pull_request |
PR(プルリクエスト)が来た/更新されたとき | マージ前にチェック・レビューBot | 🟢 |
workflow_dispatch |
手動実行ボタンを押したとき | 好きなタイミングで自分で動かす | 🟢 |
schedule(cron) |
決めた時刻に定期的に(cron=定期実行) | 毎朝のバッチ、リンク切れチェック | 🔧 |
release / タグ |
リリースを作った/タグを付けたとき | リリースの公開・成果物の添付 | 🔧 |
用語ミニ補足:
- 🟢 cron(クーロン)=「毎朝9時」「毎週月曜」のように時刻で定期実行するきっかけ。
scheduleで指定します。 - 🟢
workflow_dispatch(ワークフロー・ディスパッチ)=GitHub の画面に「実行」ボタンが出て、手で好きなときに動かせるきっかけ。
概念だけ先取り(くわしい書き方は第3章)。たとえば「
pushされたら動かす」は、手順書の先頭でこんな雰囲気になります。on: push ← 「push されたら、この手順書を動かす」という宣言🟢 1行ずつ読むと:
on:が「いつ動かすか」を表す見出し。その右のpushが「push されたとき」という意味。これだけで「上げるたびに自動で動く係」になります。実際の細かい書き方(ブランチ指定など)は次のページで。
🟢 ひとことで言うと
GitHub Actions は GitHub の中に住む「○○したら △△する係」。手順書(.github/workflows/ の YAML)は、on(いつ)→ jobs(何を)→ steps(どう) の3段でできていて、各ジョブは 使い捨ての貸しパソコン=ランナー の上で動きます。ステップは uses(既製のアクション部品) か run(コマンド) のどちらか。まずは push で動かす から始めれば十分です。