QUIZ 20分

チェックポイント:GitHub Actionsワークフロー

ストーリー

「Step 2 のチェックだ。GitHub Actionsの基礎を理解できているか確認しよう」

木村先輩が頷いた。

「ここをクリアしたら、次はテスト自動化のパイプラインを本格的に構築する。 基礎がしっかりしていないと応用で詰まるから、確実に押さえておけ」


クイズの説明

Step 2 で学んだ内容の理解度をチェックします。

  • 全6問
  • 合格ライン: 80%(5問正解)
  • 不合格の場合は復習してから再挑戦してください

問題

Q1. GitHub Actionsのワークフローファイルを配置する正しいディレクトリはどれですか?

  • A) .github/actions/
  • B) .github/workflows/
  • C) .workflows/
  • D) actions/
<details> <summary>解答と解説</summary>

正解: B

GitHub Actionsのワークフローファイルは、リポジトリの .github/workflows/ ディレクトリにYAMLファイル(.yml または .yaml)として配置します。このディレクトリ内のYAMLファイルが自動的にワークフローとして認識されます。

</details>

Q2. 以下のワークフロー定義で、build ジョブが実行されるタイミングとして正しいものはどれですか?

yaml
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 が実行される
<details> <summary>解答と解説</summary>

正解: C

testneeds: lint で lint に依存し、buildneeds: [lint, test] で両方に依存しています。lint が最初に実行され、その完了後に test が実行されます。test は lint に依存しているため、lint と同時には実行されません。build は lint と test の両方が完了した後に実行されるため、実質的には lint → test → build の順序になります。

</details>

Q3. pull_request イベントでワークフローを実行する場合、デフォルトで含まれるアクティビティタイプの組み合わせとして正しいものはどれですか?

  • A) opened, closed, labeled
  • B) opened, synchronize, reopened
  • C) opened, synchronize, closed
  • D) opened, ready_for_review, labeled
<details> <summary>解答と解説</summary>

正解: B

pull_request イベントのデフォルトのアクティビティタイプは opened(PR作成時)、synchronize(PRブランチへの新しいpush時)、reopened(クローズされたPRの再オープン時)です。closedlabeled はデフォルトでは含まれず、明示的に types で指定する必要があります。

</details>

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
<details> <summary>解答と解説</summary>

正解: D

フルコミットSHA(ハッシュ)での固定が最も安全です。バージョンタグ(v4 や v4.1.2)はリポジトリ所有者によって別のコミットに付け替えられる可能性がありますが、コミットSHAは不変です。ブランチ名(main)は常に変更されるため最も危険です。

</details>

Q5. 以下のステップ定義の usesrun の説明として正しいものはどれですか?

yaml
steps:
  - uses: actions/checkout@v4
  - run: npm test
  • A) uses はシェルコマンドを実行し、run は既存のアクションを呼び出す
  • B) uses は既存のアクションを呼び出し、run はシェルコマンドを実行する
  • C) usesrun は同じ機能で、書き方が違うだけである
  • D) uses はローカルのスクリプトを実行し、run はリモートのスクリプトを実行する
<details> <summary>解答と解説</summary>

正解: B

uses はGitHub Marketplace等で公開されている再利用可能なアクションを呼び出すキーワードです。run はRunner上でシェルコマンドを直接実行するキーワードです。共通処理はアクション(uses)で、プロジェクト固有の処理はコマンド(run)で実行するのが一般的です。

</details>

Q6. workflow_dispatch トリガーの特徴として正しいものはどれですか?

  • A) 特定の時間にスケジュール実行される
  • B) GitHub UIやAPIから手動でワークフローを実行できる
  • C) 他のワークフローから呼び出される
  • D) リポジトリにwebhookイベントが発生した時に実行される
<details> <summary>解答と解説</summary>

正解: B

workflow_dispatch は、GitHub UIの「Actions」タブやGitHub APIから手動でワークフローを実行できるトリガーです。入力パラメータ(inputs)を定義でき、環境名やバージョンなどを実行時に指定できます。スケジュール実行は schedule、他ワークフローからの呼び出しは workflow_call です。

</details>

結果

5問以上正解の場合

合格です。おめでとうございます。

Step 2「GitHub Actionsワークフローを作ろう」を完了しました。 次は Step 3「テスト自動化パイプラインを構築しよう」に進みましょう。

4問以下の場合

もう少し復習しましょう。

問題復習セクション
Q1step2_1 GitHub Actionsの基本
Q2step2_2 ワークフロー構文を理解しよう
Q3step2_3 トリガーとイベント
Q4step2_4 Marketplaceのアクション活用
Q5step2_1 GitHub Actionsの基本
Q6step2_3 トリガーとイベント

Step 2 完了

お疲れさまでした。

学んだこと

  • GitHub Actionsの基本コンポーネント(Workflow, Job, Step, Action, Runner)
  • ワークフローYAMLの構文(on, jobs, steps, runs-on)
  • トリガーとイベントの種類と使い分け
  • Marketplaceアクションの活用とセキュリティ

次のステップ

Step 3: テスト自動化パイプラインを構築しよう(4時間)

基礎が固まった今、次はより実践的なテスト自動化パイプラインを構築します。


推定所要時間: 20分