GH-200 — GitHub Actions Quick Review

Quick Review for GitHub Actions (GH-200): workflows, events, jobs, runners, security, reusable workflows, artifacts, caches, and common exam traps.

Quick Review Focus

This independent Quick Review is for candidates preparing for GitHub’s GitHub Actions (GH-200) exam. Use it to refresh the highest-yield concepts before moving into topic drills, mock exams, original practice questions, and detailed explanations.

The exam mindset is practical: know how a workflow is triggered, how jobs and steps execute, how data moves between jobs, how permissions and secrets are controlled, and which GitHub Actions feature solves a specific automation problem.

Core Mental Model

GitHub Actions automation usually follows this path:

  1. An event occurs, such as push, pull_request, workflow_dispatch, or schedule.
  2. GitHub finds a matching workflow file in .github/workflows/.
  3. The workflow creates one or more jobs.
  4. Each job runs on a runner.
  5. Each job executes steps, which either run shell commands with run or invoke actions with uses.
  6. Logs, outputs, artifacts, caches, checks, deployments, and summaries are produced.
LayerWhat it doesHigh-yield exam cueCommon mistake
WorkflowYAML automation definitionStored in .github/workflows/*.yml or .yamlExpecting a workflow outside that directory to run
EventStarts a workflowon: push, on: pull_request, on: workflow_dispatchConfusing event filters with job if conditions
JobUnit of executionHas runs-on, steps, optional needsAssuming jobs run sequentially by default
RunnerMachine that executes a jobGitHub-hosted or self-hostedAssuming files persist across jobs
StepIndividual command or actionUses run or usesTrying to use both run and uses in one step
ActionReusable automation unitJavaScript, Docker, or composite actionConfusing an action with a reusable workflow
ContextRuntime datagithub, env, secrets, matrix, needsUsing the wrong context for the execution phase
Token/permissionsAccess controlGITHUB_TOKEN, permissions, OIDCLeaving broad write permissions enabled

Workflow File Anatomy

A workflow is a YAML file placed under .github/workflows/. It normally includes an event trigger and at least one job.

KeyScopePurpose
nameWorkflowDisplay name for the workflow
run-nameWorkflow runDynamic display name for a specific run
onWorkflowDefines triggering events
permissionsWorkflow or jobSets GITHUB_TOKEN permissions
envWorkflow, job, or stepDefines environment variables
defaultsWorkflow or jobSets defaults such as shell or working directory
concurrencyWorkflow or jobControls overlapping runs or jobs
jobsWorkflowDefines one or more jobs
runs-onJobChooses the runner
needsJobCreates job dependencies
ifJob or stepConditionally runs a job or step
strategy.matrixJobExpands a job across combinations
stepsJobDefines the commands/actions in a job
usesStep or reusable workflow jobInvokes an action or reusable workflow
runStepRuns shell commands
withStep or reusable workflow callSupplies inputs
secretsReusable workflow callPasses secrets to a reusable workflow
environmentJobAssociates job with a deployment environment
outputsJob or step/actionExposes values for later use

Workflow Structure Traps

TrapCorrect understanding
Jobs run in the order listedJobs run in parallel unless linked with needs
A step can have both run and usesA normal step uses one or the other
uses always means “action”At step level it invokes an action; at job level it can call a reusable workflow
Job-level if works exactly like step-level ifJob-level if is evaluated before matrix expansion
All workflow data is available everywhereContext availability depends on workflow phase and scope
Environment variables set in one job are available in anotherJobs are isolated; use outputs or artifacts

Events and Triggers

The on key defines when a workflow runs. Be comfortable with simple triggers, filtered triggers, manual triggers, reusable workflow triggers, and security-sensitive pull request triggers.

EventUse whenKey review points
pushCode is pushed to branches or tagsCan filter by branches, tags, and paths
pull_requestValidate PR changes safelyFork PRs usually have restricted token/secrets access
pull_request_targetRun in base repository contextSecurity-sensitive; do not run untrusted head code with secrets/write token
workflow_dispatchManual runSupports typed inputs; workflow file must be available for dispatch
workflow_callReusable workflowCalled from another workflow at the job level
scheduleCron-based automationUses UTC cron; runs from the default branch context
repository_dispatchExternal/custom triggerUsually sent through the API
workflow_runReact to another workflowUseful but can create privilege-escalation risk if artifacts/input are untrusted
releaseRelease lifecycle automationUse activity types to limit when it runs
issues, pull_request_review, labelRepository collaboration automationUnderstand the event payload and permissions needed

Trigger Filters

FilterApplies toNotes
branchesBranch namesFor pull_request, usually filters target/base branches
branches-ignoreBranch namesCannot be combined with branches for the same event
tagsTag namesUsed with push tag events
tags-ignoreTag namesCannot be combined with tags for the same event
pathsChanged file pathsIf branch and path filters both exist, both must match
paths-ignoreChanged file pathsCannot be combined with paths for the same event
typesEvent activity typesExample: PR opened, synchronized, closed

High-yield filter rules:

  • If both branch filters and path filters are configured, the workflow runs only when both conditions match.
  • Negative patterns using ! are order-sensitive.
  • You cannot use branches and branches-ignore together for the same event.
  • You cannot use paths and paths-ignore together for the same event.
  • Path filters are not evaluated for tag pushes.
  • Workflows skipped by branch, path, or commit-message filters can leave required checks pending, which may block merging if that check is required.
  • Events created by the default GITHUB_TOKEN generally do not trigger new workflow runs, which helps prevent accidental recursion. Use a suitable GitHub App token or personal access token only when workflow chaining is intentionally required.

Pull Request Trigger Decision Point

ScenarioSafer choiceWhy
Build and test untrusted PR codepull_requestRuns with restricted access for forked PRs
Label/comment on a PR using base repo permissionspull_request_targetRuns in base context, but avoid executing untrusted code
Need secrets for deploymentAvoid fork PR execution; use protected branches/environmentsSecrets should not be exposed to untrusted code
Need to inspect PR metadata onlypull_request_target may fitMetadata automation is different from checking out and running PR code

The key exam trap: pull_request_target is powerful but dangerous. It runs in the context of the base repository. If you check out and execute code from an untrusted fork in that context, secrets or write permissions may be exposed.

Jobs, Steps, and Control Flow

Jobs

A job is the main execution unit in a workflow. Each job gets a runner and runs its steps in order.

FeatureUse forExam cue
runs-onSelect runnerRequired for normal jobs
needsOrder jobsWithout needs, jobs run in parallel
ifConditional job executionJob skipped if condition is false
strategy.matrixRun variantsOS/language/version combinations
continue-on-errorAllow failure without failing workflow/jobOften used for experimental matrix entries
timeout-minutesStop long-running jobsAvoids stuck jobs consuming time
concurrencyPrevent overlapping workUseful for deployments and branch-specific runs
environmentDeployment environmentCan add protection rules and environment-scoped secrets
permissionsToken scopePrefer least privilege at workflow or job level

Steps

Steps run sequentially inside a job.

Step typeSyntax cueUse for
Shell commandrunBuild, test, script, CLI command
ActionusesReusable task such as checkout, setup, upload artifact
Conditional stepifRun only under specific status/event/context conditions
Identified stepidRequired if later steps read that step’s outputs
Input-driven stepwithPass inputs to an action
Environment stepenvPass environment variables to the command/action

Status Functions

FunctionMeaningCommon use
success()Previous steps/jobs succeededDefault behavior for most steps
failure()A previous step/job failedUpload logs after failure
cancelled()Workflow was cancelledSkip cleanup that should not run after cancellation
always()Run regardless of previous resultCleanup, diagnostics, summaries
!cancelled()Run unless cancelledOften safer than unconditional always() for long operations

Common control-flow traps:

  • A dependent job is skipped if a required job is skipped or fails, unless the condition explicitly handles it.
  • Step-level if conditions are evaluated at runtime inside the job.
  • Job-level if conditions are evaluated before matrix expansion.
  • continue-on-error changes failure behavior but does not mean the command succeeded.
  • Use needs.<job_id>.result when downstream jobs must react to upstream success, failure, cancellation, or skip states.

Matrix Strategy

A matrix expands one job definition into multiple job runs.

Matrix featurePurpose
matrixDefines combinations such as OS and language version
includeAdds or modifies matrix combinations
excludeRemoves combinations
fail-fastCancels in-progress matrix jobs when one fails
max-parallelLimits simultaneous matrix jobs
continue-on-errorCan allow experimental combinations to fail

High-yield matrix rules:

  • Matrix jobs are separate job runs.
  • Matrix variables are accessed with the matrix context.
  • Use include for special combinations or extra variables.
  • Use exclude to remove invalid combinations.
  • Use fail-fast: false when you want all matrix combinations to finish even if one fails.
  • Use max-parallel when runner capacity, rate limits, or deployment constraints matter.
  • Dynamic matrices often use a previous job output plus fromJSON.

Runners

A runner is the machine that executes a job.

Runner typeBest forKey considerations
GitHub-hosted runnerCommon CI/CD tasksFresh environment per job; choose OS with runs-on
Larger GitHub-hosted runnerMore CPU/RAM or specialized capacityUseful for heavier workloads
Self-hosted runnerCustom tools, private network, specialized hardwareYou manage security, updates, cleanup, and availability
Runner groupAccess control for self-hosted runnersHelps restrict which repos can use which runners

Runner Selection

runs-on patternMeaning
Single labelMatch a runner image or label, such as Linux, Windows, or macOS runner labels
Multiple labelsRunner must match all listed labels
Self-hosted labelsInclude self-hosted plus OS/architecture/custom labels
Runner groupRestrict selection to a configured group

Runner traps:

  • Each normal job runs on its own runner instance. Do not assume job filesystem state carries over.
  • GitHub-hosted runners are ephemeral; self-hosted runners may persist files unless cleaned.
  • Shell defaults differ by operating system.
  • Container jobs and service containers are primarily Linux-runner features.
  • Self-hosted runners in public repositories require special caution because untrusted code may execute on your infrastructure.
  • If a self-hosted runner is offline, jobs can remain queued.

Actions, Composite Actions, and Reusable Workflows

Actions

An action is a reusable unit invoked from a step with uses.

Action typeRuns asGood for
JavaScript actionNode-based actionFast startup, API integrations
Docker actionContainerized actionConsistent runtime dependencies
Composite actionCollection of stepsReusing shell/action steps across workflows
Local actionAction in the same repositoryRepo-specific automation
Marketplace/third-party actionExternal action referenceCommon tasks; review and pin carefully

Security review for actions:

  • Prefer trusted actions and review what they do.
  • Pin actions to a full commit SHA when security and reproducibility matter most.
  • Pinning to a major version tag is common but less strict than SHA pinning.
  • Avoid using unreviewed actions with secrets or write permissions.
  • Use organization or enterprise policies where available to restrict allowed actions.

Composite Action vs Reusable Workflow

FeatureComposite actionReusable workflow
Invoked fromA step using usesA job using jobs.<job_id>.uses
Defines jobsNoYes
Chooses runnerNo, uses caller job runnerYes, inside called workflow
Good forRepeated step logicStandardized CI/CD workflows
InputsSupportedSupported through workflow_call
SecretsUses caller context carefullyPassed explicitly or inherited where supported
OutputsSupportedSupported
Can contain multiple jobsNoYes

Decision rule:

  • Use a composite action when you want to reuse a set of steps inside a job.
  • Use a reusable workflow when you want to reuse an entire job or multi-job process.
  • Use a workflow template when you want a starter workflow pattern for repositories, not runtime reuse.

Contexts, Variables, and Expressions

Contexts expose workflow data. The correct context depends on where the expression is evaluated.

ContextContainsCommon use
githubEvent, repository, actor, ref, run metadataBranch/event decisions
envEnvironment variables defined in workflow/job/stepShell configuration
varsConfiguration variablesNon-secret configuration
secretsEncrypted secretsTokens, passwords, credentials
inputsManual or reusable workflow inputsworkflow_dispatch, workflow_call
matrixMatrix valuesOS/version-specific logic
needsUpstream job results and outputsDownstream job decisions
stepsStep outputs and outcomesUse output from earlier step in same job
runnerRunner OS/temp/tool informationOS-specific behavior
strategyMatrix strategy metadataMatrix-related conditions
jobCurrent job informationJob services/container information

Variables and Secrets

MechanismUse forSecurity levelNotes
envRuntime environment valuesNot inherently secretScope can be workflow, job, or step
varsPlain configurationNot secretOrganization, repository, or environment-level configuration
secretsSensitive valuesEncrypted and maskedNot available in many untrusted fork scenarios
GITHUB_TOKENGitHub API access for the workflowScoped by permissionsPrefer least privilege
OIDC tokenFederated cloud authShort-livedRequires id-token: write and external trust config

Environment variable precedence generally becomes more specific as scope narrows: step-level env overrides job-level env, which overrides workflow-level env.

Workflow Command Files

File/environment variablePurposeExam trap
GITHUB_ENVSet environment variables for later steps in the same jobDoes not affect the current step
GITHUB_OUTPUTSet outputs for the current stepStep needs an id for later reference
GITHUB_PATHAdd directories to PATH for later stepsJob-scoped, not workflow-global
GITHUB_STEP_SUMMARYAdd Markdown summary for the jobUseful for reports and diagnostics
GITHUB_STATEShare state within an action’s lifecycleMainly relevant to action authoring

Expression Traps

TrapCorrect approach
Treating all values as strongly typedUse fromJSON when booleans/numbers matter
Assuming secrets can be used directly in all if expressionsUse safe patterns; secrets are restricted in conditionals
Dumping entire contexts into logsAvoid exposing sensitive metadata; masking is not a full security design
Forgetting expression delimitersUse ${{ }} where expression evaluation is required
Using untrusted input directly in shell scriptsPass values through environment variables and quote carefully
Assuming outputs are typedOutputs are strings unless parsed/converted
Using hashFiles without matching filesEmpty hash results can cause unexpected cache keys

Useful expression functions to recognize:

FunctionCommon use
containsCheck list/string membership
startsWithBranch or tag prefix logic
endsWithFile or ref suffix checks
formatBuild strings
joinCombine array values
toJSONDebug or serialize context data
fromJSONParse JSON into structured data
hashFilesBuild cache keys from lockfiles

Permissions, Tokens, and Security

Security is a major decision area for GitHub Actions. Know how to reduce privileges and prevent untrusted code from reaching secrets.

GITHUB_TOKEN

GitHub automatically creates a GITHUB_TOKEN for workflow runs. Its access is controlled with the permissions key.

Permissions practiceWhy it matters
Set permissions at workflow or job levelAvoid unnecessary default access
Grant only required scopesLeast privilege reduces blast radius
Use job-level permissions for sensitive jobsDifferent jobs may need different access
Use contents: read for checkout-only jobsMany CI jobs do not need write access
Use id-token: write only for OIDC jobsNeeded to request an OIDC token
Avoid broad write permissions on untrusted triggersPR workflows are a common attack surface

Important nuance: when you explicitly configure permissions, unspecified permissions are generally not granted, aside from required metadata access. This is a common exam-style trap.

OIDC

OpenID Connect allows workflows to request short-lived tokens from a cloud provider or external system without storing long-lived cloud credentials as GitHub secrets.

OIDC requirementMeaning
permissions: id-token: writeAllows workflow to request an OIDC token
External trust policyCloud/provider must trust the GitHub identity claims
Short-lived credential exchangeOIDC token is exchanged for provider credentials
Claim restrictionsLimit by repository, branch, environment, workflow, or other claims where appropriate

OIDC trap: granting id-token: write does not automatically grant cloud access. The external provider must be configured to trust the workflow identity.

Secrets

Secret behaviorReview point
Encrypted at restUsed for sensitive values
Masked in logsExact secret values are masked, but do not rely on logs as a security boundary
ScopedOrganization, repository, and environment scopes exist
Restricted for fork PRsDo not expect secrets in untrusted fork workflows
Not plain configurationUse vars for non-sensitive config
Can be environment-specificDeployment environments can have separate secrets

Common secret mistakes:

  • Printing secrets or derived credentials.
  • Passing secrets to untrusted third-party actions.
  • Using secrets in workflows triggered by untrusted code.
  • Confusing vars and secrets.
  • Assuming masking prevents all forms of leakage.
  • Forgetting that generated sensitive values may need explicit masking with add-mask.

Artifacts, Caches, Outputs, and Data Passing

Different data-sharing mechanisms solve different problems.

NeedBest toolWhy
Pass a small value between steps in one jobStep outputSimple and direct
Pass a small value between jobsJob output plus needsDesigned for job dependencies
Pass files between jobs in a workflowArtifactDownload in another job
Preserve dependencies between workflow runsCacheSpeeds repeated installs/builds
Publish human-readable run resultsStep summaryAppears in workflow UI
Persist deployment package for releaseArtifact or release assetCache is not a release mechanism

Outputs

Output typeHow it is used
Step outputWritten to GITHUB_OUTPUT; referenced through steps.<id>.outputs.<name>
Job outputMaps step outputs to jobs.<job_id>.outputs; consumed through needs.<job_id>.outputs.<name>
Reusable workflow outputExposed by the called workflow and consumed by the caller

Output traps:

  • A step must have an id if later steps need its outputs.
  • Job outputs are only available to jobs that declare needs.
  • Outputs are strings unless converted.
  • Outputs are not a safe place for secrets unless the flow is carefully controlled.

Artifacts vs Cache

FeatureArtifactCache
Primary purposeStore workflow files/resultsReuse dependencies/build data
Typical examplesTest reports, build packages, coverage filesPackage manager directories, tool caches
Shared across jobsYes, by upload/downloadNot the main purpose
Shared across workflow runsArtifacts can be retained; caches are restored by keyYes, if key/scope matches
DeterminismGood for exact files from a runCache hit is helpful but not guaranteed
Security cautionDo not blindly trust artifacts from untrusted workflowsDo not cache secrets or sensitive files

Cache key best practices:

  • Include operating system or platform.
  • Include dependency lockfile hash with hashFiles.
  • Use restore keys for fallback matches.
  • Do not depend on cache for correctness.
  • Do not put credentials, tokens, or secrets in cached paths.

Concurrency

Concurrency prevents overlapping workflow runs or jobs from interfering with each other.

Use caseConcurrency pattern
Cancel older CI runs on same branchGroup by workflow and ref; enable cancel-in-progress
Prevent simultaneous production deploymentsUse a stable production deployment group
Serialize environment-specific deploymentsGroup by environment name
Avoid duplicate scheduled workUse one group for the scheduled process

Review points:

  • concurrency can be set at workflow or job level.
  • A concurrency group allows at most one running and one pending run/job in that group.
  • cancel-in-progress: true cancels the currently running item in the group.
  • Group names are case-insensitive.
  • Ordering of queued items is not guaranteed.

Environments and Deployments

GitHub Actions environments help control deployment jobs.

Environment featureUse
Environment nameAssociates a job with a deployment target
Environment secretsSecrets scoped to that environment
Environment variablesNon-secret configuration scoped to that environment
Protection rulesAdd controls before a deployment job proceeds
Deployment historyTrack deployment activity

Deployment review rules:

  • Use environments for deployment gates and environment-specific secrets.
  • Use concurrency to prevent overlapping deployments.
  • Build once, then deploy the same artifact through later stages when possible.
  • Keep CI validation separate from privileged deployment jobs.
  • Avoid exposing production secrets to PR validation workflows.
  • Use least-privilege permissions for each deployment job.

Reusable Workflow Calling Patterns

Reusable workflows are triggered by workflow_call and called from another workflow at the job level.

Caller needPattern
Pass simple valuesDefine inputs in called workflow; use with in caller
Pass secrets explicitlyDefine secrets in called workflow; pass with secrets in caller
Pass available secrets broadlyUse secrets: inherit only when appropriate and supported
Return valuesDefine outputs in called workflow
Version reusable workflowReference a branch, tag, or SHA
Apply matrix to reusable workflowUse strategy.matrix on the calling job

Reusable workflow traps:

  • A reusable workflow is called as a job, not as a step.
  • The called workflow must define on: workflow_call.
  • The caller does not define the internal steps of the called workflow.
  • Permissions and secrets should be explicitly considered across the call boundary.
  • Pinning reusable workflows by SHA improves reproducibility and security.

Self-Hosted Runner Security

Self-hosted runners are powerful because they can access internal tools and networks, but that also increases risk.

RiskMitigation
Untrusted PR code runs on internal machineAvoid self-hosted runners for untrusted public PRs
Files persist between jobsClean workspace and use ephemeral runners where possible
Runner has broad network accessSegment network access
Tooling becomes outdatedPatch runner host and runner application
Secrets remain in logs/files/processesMinimize secrets, clean aggressively, use least privilege
Any repo can target runnerUse runner groups and labels carefully

Exam decision rule: if a scenario involves private infrastructure, custom hardware, or special internal dependencies, a self-hosted runner may be the answer. If the scenario involves untrusted public contributions, self-hosted runners are often the risk to avoid.

Debugging and Observability

Tool/featureUse
Workflow run logsStep-by-step execution details
AnnotationsWarnings/errors surfaced in the UI
Step summariesMarkdown reports for a job
Re-run jobs/workflowsRetry transient failures
Debug loggingMore detailed runner and step logs
toJSONInspect context data carefully
GitHub CLIInspect and trigger workflow runs from the command line
ArtifactsPreserve logs, reports, screenshots, build outputs

Debug logging review:

  • ACTIONS_STEP_DEBUG enables detailed step debug logging.
  • ACTIONS_RUNNER_DEBUG enables additional runner diagnostic logging.
  • Use debug logging carefully because logs may contain sensitive operational details.

Common failure patterns:

SymptomLikely cause
Workflow does not runWrong event, filter mismatch, workflow file location issue
Required check stays pendingWorkflow skipped by branch/path/commit-message filter
Job queued foreverNo matching runner or self-hosted runner unavailable
Step cannot access repoMissing checkout or insufficient contents permission
API call gets 403GITHUB_TOKEN permissions too restrictive
Secret is emptySecret not available for trigger/scope/environment
Output is blankMissing step id, wrong output name, or wrong context
Cache never hitsKey changes too often or path/key mismatch
Matrix creates too many jobsMatrix combinations not limited with exclude or include
Deployment overlapsMissing concurrency or environment controls

YAML and Syntax Gotchas

GitHub Actions workflows are YAML, so small syntax mistakes can change meaning.

GotchaReview point
IndentationYAML structure is indentation-sensitive
Special charactersQuote patterns beginning with characters like *, !, or [
Multi-event syntaxIf one event has configuration, use mapping syntax consistently
Glob patternsNegative patterns are order-sensitive
Strings vs booleansUse expression conversion when type matters
Shell quotingTreat untrusted input carefully
Step IDsRequired for referencing step outputs
Context spellingContext and property names must be exact
File pathsLinux, Windows, and macOS path syntax differs

High-Yield Decision Rules

Use these as quick “if the question says X, think Y” rules.

ScenarioLikely answer
Run workflow manuallyworkflow_dispatch
Reuse an entire workflowworkflow_call reusable workflow
Reuse repeated steps inside a jobComposite action
Pass files between jobsUpload/download artifact
Reuse dependencies across runsCache
Sequence jobsneeds
Run jobs on several OS/language versionsMatrix strategy
Limit overlapping deploymentsconcurrency
Require approval or protected deployment controlsEnvironment
Reduce token accesspermissions
Authenticate to cloud without long-lived secretOIDC
Safely validate fork PR codepull_request with restricted permissions
Automate PR labels/comments from base contextCarefully designed pull_request_target
Run cleanup after failureStatus functions such as always() or failure()
Set environment variable for later stepsWrite to GITHUB_ENV
Set step outputWrite to GITHUB_OUTPUT
Get upstream job outputUse needs.<job_id>.outputs
Inspect event payloadUse github.event or event payload file
Use internal network/hardwareSelf-hosted runner
Avoid running untrusted code on infrastructurePrefer GitHub-hosted or restricted patterns

Common Candidate Mistakes

Confusing Reuse Mechanisms

Candidate mistakeCorrect distinction
“Reusable workflow” called from a stepReusable workflows are called at job level
“Composite action” defines runners/jobsComposite actions run within the caller’s job
“Workflow template” runs dynamicallyTemplates help create workflow files; they are not runtime calls

Misusing Security Features

Candidate mistakeCorrect distinction
OIDC replaces all permissionsOIDC needs id-token: write and external trust
Secrets are safe in any workflowSecrets must be protected from untrusted code
Masking equals full protectionMasking helps logs but is not a complete security boundary
pull_request_target is just a stronger pull_requestIt changes trust context and can be dangerous
Broad GITHUB_TOKEN permissions are harmlessUse least privilege

Misunderstanding Data Flow

Candidate mistakeCorrect distinction
Cache is for passing build artifactsArtifacts are for exact files/results
Environment variables cross jobsJobs are isolated
Step output is available without idThe step needs an id
Job output is available everywhereDownstream job must use needs
$GITHUB_ENV affects current shell lineIt affects later steps

Quick Concept Check

PromptExpected answer
Where must workflow files live?.github/workflows/
What makes jobs run sequentially?needs
What selects the runner?runs-on
What runs a shell command?run
What invokes an action?Step-level uses
What invokes a reusable workflow?Job-level uses
What trigger enables manual runs?workflow_dispatch
What trigger enables reusable workflows?workflow_call
What is used for cloud federation?OIDC with id-token: write
What controls GITHUB_TOKEN scopes?permissions
What is best for dependency reuse?Cache
What is best for test reports/build files?Artifact
What context reads matrix values?matrix
What context reads upstream outputs?needs
What context reads encrypted secrets?secrets
What feature prevents overlapping deploys?concurrency
What feature can require deployment approval?Environment
What should be avoided with untrusted fork code?Secrets, write tokens, unsafe pull_request_target patterns

Practice Connection

After this Quick Review, use IT Mastery practice to test whether you can choose the right GitHub Actions feature under exam-style pressure. A strong GH-200 study sequence is:

  1. Start with topic drills on workflow syntax, triggers, jobs, steps, and runners.
  2. Add security drills on GITHUB_TOKEN, permissions, secrets, OIDC, and pull request threat models.
  3. Practice data-flow questions covering outputs, artifacts, caches, matrix jobs, and reusable workflows.
  4. Use mock exams to build speed and identify weak areas.
  5. Review detailed explanations for every missed or guessed question, especially when two choices seem plausible.

Next step: move into a GH-200 question bank with original practice questions, topic drills, mock exams, and detailed explanations so you can apply these rules in realistic scenarios.

Continue in IT Mastery

Use this Quick Review as a final concept map, then move into IT Mastery for focused topic drills, mixed practice sets, timed mock exams, and detailed explanations. The practice questions are original IT Mastery practice items; they are not official GitHub questions, copied live-exam content, or exam dumps.

Browse Certification Practice Tests by Exam Family