チェックポイント:GitHub Actionsワークフロー
ストーリー
「Step 2 のチェックだ。GitHub Actionsの基礎を理解できているか確認しよう」
木村先輩が頷いた。
「ここをクリアしたら、次はテスト自動化のパイプラインを本格的に構築する。 基礎がしっかりしていないと応用で詰まるから、確実に押さえておけ」
クイズの説明
Step 2 で学んだ内容の理解度をチェックします。
- 全6問
- 合格ライン: 80%(5問正解)
- 不合格の場合は復習してから再挑戦してください
問題
Q1. GitHub Actionsのワークフローファイルを配置する正しいディレクトリはどれですか?
- A)
.github/actions/ - B)
.github/workflows/ - C)
.workflows/ - D)
actions/
正解: B
GitHub Actionsのワークフローファイルは、リポジトリの .github/workflows/ ディレクトリにYAMLファイル(.yml または .yaml)として配置します。このディレクトリ内のYAMLファイルが自動的にワークフローとして認識されます。
Q2. 以下のワークフロー定義で、build ジョブが実行されるタイミングとして正しいものはどれですか?
jobs:
lint:
runs-on: ubuntu-latest
steps:
- run: npm run lint
test:
needs: lint
runs-on: ubuntu-latest
steps:
- run: npm test
build:
needs: [lint, test]
runs-on: ubuntu-latest
steps:
- run: npm run build- A) lint、test、build が全て同時に実行される
- B) lint 完了後に test と build が同時に実行される
- C) lint 完了後に test が実行され、test 完了後に build が実行される
- D) lint と test が同時に実行され、両方完了後に build が実行される
正解: C
test は needs: lint で lint に依存し、build は needs: [lint, test] で両方に依存しています。lint が最初に実行され、その完了後に test が実行されます。test は lint に依存しているため、lint と同時には実行されません。build は lint と test の両方が完了した後に実行されるため、実質的には lint → test → build の順序になります。
Q3. pull_request イベントでワークフローを実行する場合、デフォルトで含まれるアクティビティタイプの組み合わせとして正しいものはどれですか?
- A) opened, closed, labeled
- B) opened, synchronize, reopened
- C) opened, synchronize, closed
- D) opened, ready_for_review, labeled
正解: B
pull_request イベントのデフォルトのアクティビティタイプは opened(PR作成時)、synchronize(PRブランチへの新しいpush時)、reopened(クローズされたPRの再オープン時)です。closed や labeled はデフォルトでは含まれず、明示的に types で指定する必要があります。
Q4. GitHub Actionsでサードパーティのアクションを使用する際、最も安全なバージョン固定方法はどれですか?
- A)
uses: some-action@main - B)
uses: some-action@v4 - C)
uses: some-action@v4.1.2 - D)
uses: some-action@b4ffde65f46336ab88eb53be808477a3936bae11
正解: D
フルコミットSHA(ハッシュ)での固定が最も安全です。バージョンタグ(v4 や v4.1.2)はリポジトリ所有者によって別のコミットに付け替えられる可能性がありますが、コミットSHAは不変です。ブランチ名(main)は常に変更されるため最も危険です。
</details>Q5. 以下のステップ定義の uses と run の説明として正しいものはどれですか?
steps:
- uses: actions/checkout@v4
- run: npm test- A)
usesはシェルコマンドを実行し、runは既存のアクションを呼び出す - B)
usesは既存のアクションを呼び出し、runはシェルコマンドを実行する - C)
usesとrunは同じ機能で、書き方が違うだけである - D)
usesはローカルのスクリプトを実行し、runはリモートのスクリプトを実行する
正解: B
uses はGitHub Marketplace等で公開されている再利用可能なアクションを呼び出すキーワードです。run はRunner上でシェルコマンドを直接実行するキーワードです。共通処理はアクション(uses)で、プロジェクト固有の処理はコマンド(run)で実行するのが一般的です。
Q6. workflow_dispatch トリガーの特徴として正しいものはどれですか?
- A) 特定の時間にスケジュール実行される
- B) GitHub UIやAPIから手動でワークフローを実行できる
- C) 他のワークフローから呼び出される
- D) リポジトリにwebhookイベントが発生した時に実行される
正解: B
workflow_dispatch は、GitHub UIの「Actions」タブやGitHub APIから手動でワークフローを実行できるトリガーです。入力パラメータ(inputs)を定義でき、環境名やバージョンなどを実行時に指定できます。スケジュール実行は schedule、他ワークフローからの呼び出しは workflow_call です。
結果
5問以上正解の場合
合格です。おめでとうございます。
Step 2「GitHub Actionsワークフローを作ろう」を完了しました。 次は Step 3「テスト自動化パイプラインを構築しよう」に進みましょう。
4問以下の場合
もう少し復習しましょう。
| 問題 | 復習セクション |
|---|---|
| Q1 | step2_1 GitHub Actionsの基本 |
| Q2 | step2_2 ワークフロー構文を理解しよう |
| Q3 | step2_3 トリガーとイベント |
| Q4 | step2_4 Marketplaceのアクション活用 |
| Q5 | step2_1 GitHub Actionsの基本 |
| Q6 | step2_3 トリガーとイベント |
Step 2 完了
お疲れさまでした。
学んだこと
- GitHub Actionsの基本コンポーネント(Workflow, Job, Step, Action, Runner)
- ワークフローYAMLの構文(on, jobs, steps, runs-on)
- トリガーとイベントの種類と使い分け
- Marketplaceアクションの活用とセキュリティ
次のステップ
Step 3: テスト自動化パイプラインを構築しよう(4時間)
基礎が固まった今、次はより実践的なテスト自動化パイプラインを構築します。
推定所要時間: 20分