GitHub

GitHub Actions (GH-200) practice questions

Associate-level GitHub certification covering workflow authoring, action development, enterprise-scale management and secure, optimised automation with GitHub Actions.

New to GH-200? Read the how to pass GitHub Actions (GH-200) study guide for a domain breakdown, a study plan, and exam-day tips.

Revising? The GH-200 cheat sheet puts the domain weightings, key facts, and easy-to-confuse traps on one printable page.

Prefer flashcards? See a free sample of the GH-200 flashcard deck, concept and misconception cards side by side.

About 60 to 65 questions
Questions
100 min
Time allowed
700 / 1000
Pass mark
$99
Exam cost (USD)
267
Practice questions

Exam domains and weighting

The GH-200 blueprint is split across 5 domains. See the official exam guide for the authoritative breakdown.

GH-200 exam domain weighting - each domain's share of the exam. Full breakdown with links below.
GH-200 domains by share of the exam
DomainWeight
Author and manage workflows25%
Consume and troubleshoot workflows18%
Author and maintain actions18%
Manage GitHub Actions for the enterprise24%
Secure and optimize automation15%

Free sample questions

No account needed. Every question has a worked explanation, just like the full bank.

Free sampleAuthor and manage workflowsmedium

A maintenance workflow must run automatically every night at 02:00 UTC to prune stale caches, with no human starting it and no code change needed to fire it. Which trigger should be configured at the top of the workflow file?

on:
  <trigger>:
    - cron: '0 2 * * *'
  • Aschedule, because it accepts one or more cron expressions and triggers the workflow on the defined recurring time-based interval. Correct
  • Bworkflow_dispatch, because a recurring nightly job is started from the Actions tab and the cron expression sets the default run time.
  • Crepository_dispatch, because it listens for a timed webhook that GitHub emits internally to drive cron-based recurring runs.
  • Dpush, because adding a cron filter under the push event tells GitHub to replay the last push on the recurring schedule.
Recognise that the schedule event with a cron expression is the trigger for recurring time-based workflow runs. GitHub Actions runs a workflow on a recurring timetable only through the schedule event, which accepts cron expressions evaluated in UTC. A cron entry such as '0 2 * * *' therefore fires the workflow nightly at 02:00 UTC with no commit and no manual action. The other events fire on a push, a manual button, or an externally posted custom event, and none of them honours a cron field.

Why A is correct: The schedule event takes a list of cron expressions evaluated against UTC, so '0 2 * * *' fires the workflow every night at 02:00 without any human action or code change.

Why B is wrong: Tempting because workflow_dispatch also appears under on, but it only enables a manual run button and accepts no cron field, so it cannot fire the job automatically at 02:00 UTC.

Why C is wrong: Tempting because repository_dispatch is also event driven, but it fires only when an external system posts a custom event to the API, not on any internal timer, so a cron field is ignored here.

Why D is wrong: Tempting because push is a very common trigger, but it fires only when commits are pushed and supports no cron field, so it cannot produce a nightly time-based run.

Free sampleConsume and troubleshoot workflowsmedium

A run-history list shows a workflow that executed without any new commit, with no operator named as the actor and no external API call recorded. The workflow file declares the on block below. Which trigger most likely produced this run?

on:
  push:
    branches: [main]
  workflow_dispatch:
  schedule:
    - cron: '0 6 * * 1'
  • AThe push event, because the run history records a commit to main even when the diff is empty and the user interface omits the pushing actor.
  • BThe workflow_dispatch event, because a teammate clicked Run workflow and GitHub anonymises the actor on manually started runs to protect the operator.
  • CThe repository_dispatch event, because an outside system posted a custom payload that the run history hides from the actor and commit columns by design.
  • DThe schedule event, because a cron-triggered run fires on its own timetable with no commit and is attributed to the workflow rather than to any human or external caller. Correct
Infer the trigger of a workflow run from run-history clues such as the absence of a commit, an actor, or an external call. When a run has no associated commit, no named operator, and no recorded API dispatch, the remaining time-based trigger is the cause. A scheduled run fires from its cron timetable with no human or external initiator, so GitHub attributes it to the workflow rather than to an actor. A push run always references a head commit, a manual workflow_dispatch run records the operator, and repository_dispatch requires an external API call, none of which fits the evidence.

Why A is wrong: Tempting because push is listed first in the on block, but a push run always references a head commit and names the pusher as actor, neither of which appears in this run.

Why B is wrong: Tempting because workflow_dispatch needs no commit, but a manual run always records the person who clicked Run workflow as the actor, so an unnamed operator rules it out.

Why C is wrong: Tempting because that event also lacks a commit, but repository_dispatch is not in the on block and the stem states no external API call was recorded, so it cannot be the cause.

Why D is correct: A scheduled run fires from the cron timetable with no commit and no operator, and run history attributes it to the workflow itself, matching the empty actor and absent commit observed.

Free sampleAuthor and maintain actionsmedium

A team has three workflow steps that each run shell commands: install a CLI, authenticate it, then call it with arguments. They want to package exactly these run steps into one reusable unit that they can publish and call with a single uses: reference, without rewriting the logic in another language or building an image. Which action type should they author?

runs:
  using: "<type>"
  steps:
    - run: ./install.sh
      shell: bash
    - run: ./auth.sh
      shell: bash
  • AA JavaScript action, because the runner can only execute bundled shell run steps after they are first rewritten as a Node.js entry point that the toolkit invokes on each platform.
  • BA Docker container action, because grouping several shell commands into a single action is only supported once the commands are baked into an image that the runner pulls before each invocation.
  • CA composite action, because its action.yml uses a runs block with using: composite and a steps list, letting them bundle the existing shell run steps into one unit referenced through uses:. Correct
  • DA reusable workflow, because a file under .github/workflows called through workflow_call is the supported way to package shell run steps for reference by uses: inside another job's steps.
Choose a composite action to bundle a sequence of existing shell run steps into one unit referenced by uses without rewriting logic. A composite action declares runs.using as composite and lists steps, so it groups multiple run steps into a single action that other workflows reference with uses. JavaScript actions need a Node entry point, Docker actions need an image and run only on Linux, and reusable workflows are invoked at job level through workflow_call rather than as a step, so none of them packages plain shell steps as requested.

Why A is wrong: Tempting since JavaScript actions run directly on the runner, but they require rewriting the logic as a Node entry point, which the team explicitly wants to avoid for plain shell steps.

Why B is wrong: Tempting because containers also run shell commands, but a Docker action needs an image build and only runs on Linux runners, which is heavier than the shell-only packaging requested.

Why C is correct: Composite actions are defined by using: composite plus a steps list, which is exactly the construct for wrapping a sequence of run steps into one publishable action referenced with uses.

Why D is wrong: Tempting as reusable workflows also promote reuse, but they are called at the job level with uses under jobs, not as a step action, so they cannot bundle individual run steps.

More free GH-200 practice questions with worked answers

Frequently asked questions

How many questions are on the GH-200 exam?
The GitHub Actions (GH-200) exam has About 60 to 65 questions questions and runs for 100 minutes. The format is multiple choice and multiple response, at a pearson vue testing center or online proctored.
What score do I need to pass GH-200?
The pass mark is 700 / 1000. Examworthy gives you a per-domain readiness score so you can see which domains are holding you back before you book.
How much does the GH-200 exam cost?
The exam costs 99 USD to sit. Practising on Examworthy is free to start, with a worked explanation on every question.
Is there a GH-200 practice exam?
Yes. Examworthy's exam mode runs a timed GH-200 practice exam (mock) paced to match the real exam, scored per domain so you can see exactly where you stand against the blueprint. Timed mocks are free with an account.
How does Examworthy help me prepare for GH-200?
Every practice question carries a worked explanation and a per-distractor rationale, mapped to the official blueprint domains. You learn why each answer is right or wrong, not just the letter.
Is Examworthy affiliated with GitHub?
No. Examworthy is not affiliated with or endorsed by GitHub. Our questions are original, blueprint-aligned practice material; we never reproduce live exam items.

Related certifications

More certifications you can practise on Examworthy, related to GitHub Actions (GH-200).

Browse all certifications

Examworthy is not affiliated with or endorsed by GitHub. All questions are original, blueprint-aligned practice material. We never reproduce live exam items. GH-200 and related marks belong to their respective owners.