Skip to main content

Contexts

Learn about contexts in GitHub Actions.

About contexts

Los contextos son una manera de acceder a información acerca de las ejecuciones de flujo de trabajo, variable, entornos del ejecutor, trabajos y pasos. Each context is an object that contains properties, which can be strings or other objects.

Los contextos, objetos y propiedades variarán significativamente bajo las diferentes condiciones de ejecución de flujo de trabajo. For example, the matrix context is only populated for jobs in a matrix.

You can access contexts using the expression syntax. For more information, see Evaluación de expresiones en flujos de trabajo y acciones.

${{ <context> }}

Advertencia

Al crear flujos de trabajo y acciones, siempre debe tener en cuenta si el código podría ejecutar una entrada de posibles atacantes que no es de confianza. Se tratará a algunos contextos como una entrada no confiable, ya que un atacante podrían insertar su propio contenido malintencionado. Para más información, consulta Fortalecimiento de seguridad para GitHub Actions.

Determining when to use contexts

GitHub Actions includes a collection of variables called contexts and a similar collection of variables called default variables. These variables are intended for use at different points in the workflow:

  • Default environment variables: These environment variables exist only on the runner that is executing your job. For more information, see Almacenamiento de información en variables.
  • Contexts: You can use most contexts at any point in your workflow, including when default variables would be unavailable. For example, you can use contexts with expressions to perform initial processing before the job is routed to a runner for execution; this allows you to use a context with the conditional if keyword to determine whether a step should run. Once the job is running, you can also retrieve context variables from the runner that is executing the job, such as runner.os. For details of where you can use various contexts within a workflow, see Contexts reference.

The following example demonstrates how these different types of variables can be used together in a job:

YAML
name: CI
on: push
jobs:
  prod-check:
    if: ${{ github.ref == 'refs/heads/main' }}
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying to production server on branch $GITHUB_REF"

In this example, the if statement checks the github.ref context to determine the current branch name; if the name is refs/heads/main, then the subsequent steps are executed. The if check is processed by GitHub Actions, and the job is only sent to the runner if the result is true. Once the job is sent to the runner, the step is executed and refers to the $GITHUB_REF variable from the runner.