1
0
mirror of synced 2025-12-25 02:17:36 -05:00
Files
docs/content/actions/learn-github-actions/contexts.md

23 KiB

title, shortTitle, intro, redirect_from, versions, miniTocMaxHeadingLevel
title shortTitle intro redirect_from versions miniTocMaxHeadingLevel
Contexts Contexts You can access context information in workflows and actions.
/articles/contexts-and-expression-syntax-for-github-actions
/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions
/actions/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions
/actions/reference/contexts-and-expression-syntax-for-github-actions
/actions/reference/context-and-expression-syntax-for-github-actions
fpt ghes ghae ghec
* * * *
3

{% data reusables.actions.enterprise-beta %} {% data reusables.actions.enterprise-github-hosted-runners %}

About contexts

{% data reusables.github-actions.context-injection-warning %}

Contexts are a way to access information about workflow runs, runner environments, jobs, and steps. Contexts use the expression syntax. For more information, see "Expressions."

{% raw %} ${{ <context> }} {% endraw %}

Context name Type Description
github object Information about the workflow run. For more information, see github context.
env object Contains environment variables set in a workflow, job, or step. For more information, see env context.
job object Information about the currently executing job. For more information, see job context.
steps object Information about the steps that have been run in this job. For more information, see steps context.
runner object Information about the runner that is running the current job. For more information, see runner context.
secrets object Enables access to secrets. For more information about secrets, see "Creating and using encrypted secrets."
strategy object Enables access to the configured strategy parameters and information about the current job. Strategy parameters include fail-fast, job-index, job-total, and max-parallel.
matrix object Enables access to the matrix parameters you configured for the current job. For example, if you configure a matrix build with the os and node versions, the matrix context object includes the os and node versions of the current job.
needs object Enables access to the outputs of all jobs that are defined as a dependency of the current job. For more information, see needs context.
{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-4757 %} inputs object

As part of an expression, you may access context information using one of two syntaxes.

  • Index syntax: github['sha']
  • Property dereference syntax: github.sha

In order to use property dereference syntax, the property name must:

  • start with a-Z or _.
  • be followed by a-Z 0-9 - or _.

Determining when to use contexts

{% data reusables.github-actions.using-context-or-environment-variables %}

github context

The github context contains information about the workflow run and the event that triggered the run. You can read most of the github context data in environment variables. For more information about environment variables, see "Using environment variables."

{% data reusables.github-actions.github-context-warning %} {% data reusables.github-actions.context-injection-warning %}

Property name Type Description
github object The top-level context available during any job or step in a workflow.
github.action string The name of the action currently running. {% data variables.product.prodname_dotcom %} removes special characters or uses the name __run when the current step runs a script. If you use the same action more than once in the same job, the name will include a suffix with the sequence number with underscore before it. For example, the first script you run will have the name __run, and the second script will be named __run_2. Similarly, the second invocation of actions/checkout will be actionscheckout2.
github.action_path string The path where your action is located. You can use this path to easily access files located in the same repository as your action. This attribute is only supported in composite actions.
github.actor string The login of the user that initiated the workflow run.
github.base_ref string The base_ref or target branch of the pull request in a workflow run. This property is only available when the event that triggers a workflow run is either pull_request or pull_request_target.
github.event object The full event webhook payload. For more information, see "Events that trigger workflows." You can access individual properties of the event using this context.
github.event_name string The name of the event that triggered the workflow run.
github.event_path string The path to the full event webhook payload on the runner.
github.head_ref string The head_ref or source branch of the pull request in a workflow run. This property is only available when the event that triggers a workflow run is either pull_request or pull_request_target.
github.job string The job_id of the current job.
github.ref string The branch or tag ref that triggered the workflow run. For branches this is the format refs/heads/<branch_name>, and for tags it is refs/tags/<tag_name>.
{%- ifversion fpt or ghec or ghes > 3.3 or ghae-issue-5338 %}
github.ref_name string {% data reusables.actions.ref_name-description %}
github.ref_protected string {% data reusables.actions.ref_protected-description %}
github.ref_type string {% data reusables.actions.ref_type-description %}
{%- endif %}
github.repository string The owner and repository name. For example, Codertocat/Hello-World.
github.repository_owner string The repository owner's name. For example, Codertocat.
github.run_id string {% data reusables.github-actions.run_id_description %}
github.run_number string {% data reusables.github-actions.run_number_description %}
github.run_attempt string A unique number for each attempt of a particular workflow run in a repository. This number begins at 1 for the workflow run's first attempt, and increments with each re-run.
github.server_url string Returns the URL of the GitHub server. For example: https://github.com.
github.sha string The commit SHA that triggered the workflow run.
github.token string A token to authenticate on behalf of the GitHub App installed on your repository. This is functionally equivalent to the GITHUB_TOKEN secret. For more information, see "Authenticating with the GITHUB_TOKEN."
github.workflow string The name of the workflow. If the workflow file doesn't specify a name, the value of this property is the full path of the workflow file in the repository.
github.workspace string The default working directory for steps and the default location of your repository when using the checkout action.

env context

The env context contains environment variables that have been set in a workflow, job, or step. For more information about setting environment variables in your workflow, see "Workflow syntax for {% data variables.product.prodname_actions %}."

The env context syntax allows you to use the value of an environment variable in your workflow file. You can use the env context in the value of any key in a step except for the id and uses keys. For more information on the step syntax, see "Workflow syntax for {% data variables.product.prodname_actions %}."

If you want to use the value of an environment variable inside a runner, use the runner operating system's normal method for reading environment variables.

Property name Type Description
env object This context changes for each step in a job. You can access this context from any step in a job.
env.<env_name> string The value of a specific environment variable.

job context

The job context contains information about the currently running job.

Property name Type Description
job object This context changes for each job in a workflow run. You can access this context from any step in a job.
job.container object Information about the job's container. For more information about containers, see "Workflow syntax for {% data variables.product.prodname_actions %}."
job.container.id string The id of the container.
job.container.network string The id of the container network. The runner creates the network used by all containers in a job.
job.services object The service containers created for a job. For more information about service containers, see "Workflow syntax for {% data variables.product.prodname_actions %}."
job.services.<service id>.id string The id of the service container.
job.services.<service id>.network string The id of the service container network. The runner creates the network used by all containers in a job.
job.services.<service id>.ports object The exposed ports of the service container.
job.status string The current status of the job. Possible values are success, failure, or cancelled.

steps context

The steps context contains information about the steps in the current job that have already run.

Property name Type Description
steps object This context changes for each step in a job. You can access this context from any step in a job.
steps.<step id>.outputs object The set of outputs defined for the step. For more information, see "Metadata syntax for {% data variables.product.prodname_actions %}."
steps.<step id>.conclusion string The result of a completed step after continue-on-error is applied. Possible values are success, failure, cancelled, or skipped. When a continue-on-error step fails, the outcome is failure, but the final conclusion is success.
steps.<step id>.outcome string The result of a completed step before continue-on-error is applied. Possible values are success, failure, cancelled, or skipped. When a continue-on-error step fails, the outcome is failure, but the final conclusion is success.
steps.<step id>.outputs.<output name> string The value of a specific output.

runner context

The runner context contains information about the runner that is executing the current job.

Property name Type Description
runner.name string {% data reusables.actions.runner-name-description %}
runner.os string {% data reusables.actions.runner-os-description %}
runner.arch string {% data reusables.actions.runner-arch-description %}
runner.temp string {% data reusables.actions.runner-temp-directory-description %}
runner.tool_cache string {% ifversion ghae %}{% data reusables.actions.self-hosted-runners-software %} {% else %} {% data reusables.actions.runner-tool-cache-description %} {% endif %}

needs context

The needs context contains outputs from all jobs that are defined as a dependency of the current job. For more information on defining job dependencies, see "Workflow syntax for {% data variables.product.prodname_actions %}."

Property name Type Description
needs.<job id> object A single job that the current job depends on.
needs.<job id>.outputs object The set of outputs of a job that the current job depends on.
needs.<job id>.outputs.<output name> string The value of a specific output for a job that the current job depends on.
needs.<job id>.result string The result of a job that the current job depends on. Possible values are success, failure, cancelled, or skipped.

{% ifversion fpt or ghec or ghes > 3.3 or ghae-issue-4757 %}

inputs context

The inputs context contains information about the inputs of reusable workflow. The inputs are defined in workflow_call event configuration. These inputs are passed from jobs.<job_id>.with in an external workflow.

For more information, see "Reusing workflows".

Property name Type Description
inputs object This context is only available when it is a reusable workflow.
inputs.<name> string or number or boolean Each input value passed from an external workflow.
{% endif %}

Example printing context information to the log file

To inspect the information that is accessible in each context, you can use this workflow file example.

{% data reusables.github-actions.github-context-warning %}

.github/workflows/main.yml {% raw %}

on: push

jobs:
  one:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJSON(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJSON(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJSON(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJSON(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJSON(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJSON(matrix) }}
        run: echo "$MATRIX_CONTEXT"

{% endraw %}

Context availability

Different contexts are available throughout a workflow run. For example, the secrets context may only be used at certain places within a job.

In addition, some functions may only be used in certain places. For example, the hashFiles function is not available everywhere.

The following table indicates where each context and special function can be used within a workflow. Unless listed below, a function can be used anywhere.

{% ifversion fpt or ghes > 3.3 or ghae-issue-4757 or ghec %}

Path Context Special functions
concurrency github
env github, secrets, inputs
jobs.<job_id>.concurrency github, needs, strategy, matrix, inputs
jobs.<job_id>.container github, needs, strategy, matrix, inputs
jobs.<job_id>.container.credentials github, needs, strategy, matrix, env, secrets, inputs
jobs.<job_id>.container.env.<env_id> github, needs, strategy, matrix, job, runner, env, secrets, inputs
jobs.<job_id>.continue-on-error github, needs, strategy, matrix, inputs
jobs.<job_id>.defaults.run github, needs, strategy, matrix, env, inputs
jobs.<job_id>.env github, needs, strategy, matrix, secrets, inputs
jobs.<job_id>.environment github, needs, strategy, matrix, inputs
jobs.<job_id>.environment.url github, needs, strategy, matrix, job, runner, env, steps, inputs
jobs.<job_id>.if github, needs, inputs always, cancelled, success, failure
jobs.<job_id>.name github, needs, strategy, matrix, inputs
jobs.<job_id>.outputs.<output_id> github, needs, strategy, matrix, job, runner, env, secrets, steps, inputs
jobs.<job_id>.runs-on github, needs, strategy, matrix, inputs
jobs.<job_id>.secrets.<secrets_id> github, needs, secrets
jobs.<job_id>.services github, needs, strategy, matrix, inputs
jobs.<job_id>.services.<service_id>.credentials github, needs, strategy, matrix, env, secrets, inputs
jobs.<job_id>.services.<service_id>.env.<env_id> github, needs, strategy, matrix, job, runner, env, secrets, inputs
jobs.<job_id>.steps.continue-on-error github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.env github, needs, strategy, matrix, job, runner, env, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.if github, needs, strategy, matrix, job, runner, env, steps, inputs always, cancelled, success, failure, hashFiles
jobs.<job_id>.steps.name github, needs, strategy, matrix, job, runner, env, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.run github, needs, strategy, matrix, job, runner, env, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.timeout-minutes github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.with github, needs, strategy, matrix, job, runner, env, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.working-directory github, needs, strategy, matrix, job, runner, env, secrets, steps, inputs hashFiles
jobs.<job_id>.strategy github, needs, inputs
jobs.<job_id>.timeout-minutes github, needs, strategy, matrix, inputs
jobs.<job_id>.with.<with_id> github, needs
on.workflow_call.inputs.<inputs_id>.default github
on.workflow_call.outputs.<output_id>.value github, jobs, inputs
{% else %}
Path Context Special functions
---- ------- -----------------
concurrency github
env github, secrets
jobs.<job_id>.concurrency github, needs, strategy, matrix
jobs.<job_id>.container github, needs, strategy, matrix
jobs.<job_id>.container.credentials github, needs, strategy, matrix, env, secrets
jobs.<job_id>.container.env.<env_id> github, needs, strategy, matrix, job, runner, env, secrets
jobs.<job_id>.continue-on-error github, needs, strategy, matrix
jobs.<job_id>.defaults.run github, needs, strategy, matrix, env
jobs.<job_id>.env github, needs, strategy, matrix, secrets
jobs.<job_id>.environment github, needs, strategy, matrix
jobs.<job_id>.environment.url github, needs, strategy, matrix, job, runner, env, steps
jobs.<job_id>.if github, needs always, cancelled, success, failure
jobs.<job_id>.name github, needs, strategy, matrix
jobs.<job_id>.outputs.<output_id> github, needs, strategy, matrix, job, runner, env, secrets, steps
jobs.<job_id>.runs-on github, needs, strategy, matrix
jobs.<job_id>.services github, needs, strategy, matrix
jobs.<job_id>.services.<service_id>.credentials github, needs, strategy, matrix, env, secrets
jobs.<job_id>.services.<service_id>.env.<env_id> github, needs, strategy, matrix, job, runner, env, secrets
jobs.<job_id>.steps.continue-on-error github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.env github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.if github, needs, strategy, matrix, job, runner, env, steps always, cancelled, success, failure, hashFiles
jobs.<job_id>.steps.name github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.run github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.timeout-minutes github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.with github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.steps.working-directory github, needs, strategy, matrix, job, runner, env, secrets, steps hashFiles
jobs.<job_id>.strategy github, needs
jobs.<job_id>.timeout-minutes github, needs, strategy, matrix
{% endif %}