Skip to Content

GitHub Actions: What Scopes Are Available to Define Custom Environment Variables?

Learn about the three key scopes available for defining custom environment variables in GitHub Actions workflows: workflow-wide, job-specific, and step-specific. Enhance your CI/CD pipelines with precise variable control. In GitHub Actions, custom environment variables can be defined at various scopes to control their availability and usage within workflows. These scopes are crucial for managing configurations dynamically and securely.

Question

Which scopes are available to define custom environment variables within a workflow file? (Choose three.)

A. the entire workflow, by using env at the top level of the workflow file
B. all jobs being run on a single Actions runner, by using runner.env at the top of the workflow file
C. the entire stage, by using env at the top of the defined build stage
D. within the run attribute of a job step
E. the contents of a job within a workflow, by using jobs.<job_id>.env
F. a specific step within a job, by using jobs.<job_id>.steps[*].env

Answer

A. the entire workflow, by using env at the top level of the workflow file
D. within the run attribute of a job step
F. a specific step within a job, by using jobs.<job_id>.steps[*].env

Explanation

A. Workflow-Level Scope

Using env at the top level of a workflow file makes the variable accessible across all jobs and steps within that workflow. This is ideal for global settings that remain consistent throughout the workflow.

name: Example Workflow
on: push
env:
GLOBAL_VAR: "GlobalValue"
jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Print Global Variable
run: echo $GLOBAL_VAR

This ensures GLOBAL_VAR is available to all jobs and steps in the workflow.

D. Step-Level Scope (Within run)

Environment variables can be defined directly within a run block for use in that specific step. This is useful for temporary or highly localized variables.

steps:
- name: Example Step
run: |
TEMP_VAR="TemporaryValue"
echo $TEMP_VAR

Such variables exist only during the execution of that particular step.

F. Step-Specific Scope Using jobs.<job_id>.steps[*].env

You can define variables for a specific step using the env key under steps. This provides better readability and allows variable reuse within that step.

jobs:
example_job:
runs-on: ubuntu-latest
steps:
- name: Example Step with Scoped Variable
env:
STEP_VAR: "StepValue"
run: echo $STEP_VAR

This scope ensures the variable is isolated to the defined step, avoiding unintended interference with other parts of the workflow.

Why Other Options Are Incorrect

B. Runner-Level Scope (runner.env)
This is not a valid syntax in GitHub Actions. Variables cannot be scoped to all jobs running on a single runner.

C. Stage-Level Scope (env at build stage)
GitHub Actions does not support “stages” as a concept; instead, it organizes workflows into jobs and steps.

E. Job-Level Scope (jobs.<job_id>.env)
While this is valid syntax, it is not one of the correct answers to this question because it wasn’t listed among the chosen options.

By understanding these scopes, you can effectively manage environment variables in your GitHub Actions workflows, ensuring both flexibility and security in your CI/CD pipelines.

You can define environment variables for the entire workflow by using the env key at the top level of the workflow file. These environment variables will be available to all jobs and steps within the workflow.

Environment variables can also be set within the run attribute of a job step, and these variables will be scoped only to that specific step.

You can set environment variables for specific steps within a job by using jobs.<job_id>.steps[*].env, which allows you to define variables that will only be available to that step.

GitHub Actions certification exam assessment practice question and answer (Q&A) dump including multiple choice questions (MCQ) and objective type questions, with detail explanation and reference available free, helpful to pass the GitHub Actions exam and earn GitHub Actions certification.