Skip to main content

GitHub AE es una versión limitada en este momento.

variables

GitHub establece variables predeterminadas para cada ejecución de flujo de trabajo de GitHub Actions. También puedes establecer variables personalizadas en tu archivo de flujo de trabajo.

Acerca de las variables

Puedes utilizar variables para almacenar información que quieras referenciar en tu flujo de trabajo. Referencias variables dentro de un paso de flujo de trabajo o una acción y estas se interpolan en la máquina ejecutora que ejecuta tu flujo de trabajo. Los comandos que se ejecutan en las acciones o flujos de trabajo pueden crear, leer y modificar las variables.

Puedes configurar tus propias variables personalizadas, puedes utilizar las variables predefinidas que configura GitHub automáticamente y también utilizar cualquier otra variable que se configure en el ambiente de trabajo del ejecutor. Las variables distinguen mayúsculas de minúsculas.

Definición de variables de entorno

Para establecer una variable de entorno personalizada, puedes definirla con la clave env del archivo de flujo de trabajo. El alcance de una variable personalizada establecida por este método se limita al elemento en el cual se define. Puedes definir las variables que tienen alcance para:

  • Todo el flujo de trabajo, mediante el uso de env en el nivel superior del archivo de flujo de trabajo.
  • El contenido de un trabajo dentro de un flujo de trabajo mediante jobs.<job_id>.env.
  • Un paso específico dentro de un trabajo mediante jobs.<job_id>.steps[*].env.
YAML
name: Greeting on variable day

on:
  workflow_dispatch

env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello Mona it's Monday"
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
        env:
          First_Name: Mona

Puedes acceder a los valores de variable env mediante variables de entorno de ejecutor o mediante contextos. En el ejemplo anterior, se muestran tres variables personalizadas que se usan como variables de entorno en un comando echo: $DAY_OF_WEEK, $Greeting y $First_Name. A los valores para estas variables se les configura y da el alcance en el flujo de trabajo, job y nivel de paso respectivamente. Para obtener más información sobre el acceso a valores de variable mediante contextos, consulta "Uso de contextos para acceder a valores de variable".

Debido a que la interpolación de las variables de ambiente del ejecutor se realiza después de que un trabajo del flujo de trabajo se envíe a una máquina ejecutora, debes utilizar la sintaxis adecuada para el shell que se utiliza en el ejecutor. En este ejemplo, el flujo de trabajo especifica ubuntu-latest. De manera predeterminada, los ejecutores de Linux utilizan el shell bash, así que debe utilizar la sintaxis $NAME. Si el flujo de trabajo especificó un ejecutor Windows, tendrá que usar la sintaxis para PowerShell, $env:NAME. Para obtener más información sobre shells, consulta "Sintaxis del flujo de trabajo para Acciones de GitHub".

Convenciones de nomenclatura para las variables de entorno

Cuando configuras una variable de entorno, no puedes utilizar ninguno de los nombres de variable de entorno predeterminados. Para obtener una lista completa de variables de entorno predeterminadas, consulta la sección "Variables de entorno predeterminadas" a continuación. Si intentas anular el valor de estas variables predeterminadas, se ignorará la tarea.

Toda variable nueva que configures y que apunte a una ubicación en el sistema de archivos debe tener un sufijo _PATH. Las variables predeterminadas GITHUB_ENV y GITHUB_WORKSPACE son excepciones a esta convención.

Nota: Puede enumerar todo el conjunto de variables de entorno que están disponibles para un paso del flujo de trabajo utilizando run: env en un paso y, a continuación, examinar el resultado del paso.

Uso de contextos para acceder a los valores de las variables

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. Para obtener más información, consulta "Contextos". Hay muchos otros contextos que puedes utilizar para propósitos diversos en tus flujos de trabajo. Para obtener más información sobre dónde se pueden usar varios contextos dentro de un flujo de trabajo, consulta "Contextos".

Puedes acceder a los valores de variables de entorno mediante el env contexto.

Uso del contexto env para acceder a los valores de las variables de entorno

Adicionalmente a las variables de entorno del ejecutor, GitHub Actions también te permite configurar y leer los valores clave env utilizando contextos. Se pretende utilizar las variables de ambiente y contextos en puntos diferentes del flujo de trabajo.

Las variables de entorno del ejecutor siempre se interpolan en la máquina del ejecutor. Sin embargo, las GitHub Actions procesan algunas partes de los flujos de trabajo y no se envían al ejecutor. No puedes utilizar variables de ambiente en estas partes de un archivo de flujo de trabajo. En su lugar, puedes utilizar contextos. Por ejemplo, GitHub Actions siempre procesará un condicional if, el cual determina si un trabajo o paso se envía al ejecutor o no. Puedes utilizar un contexto en una declaración condicional if para acceder al valor de una variable.

YAML
env:
  DAY_OF_WEEK: Monday

jobs:
  greeting_job:
    runs-on: ubuntu-latest
    env:
      Greeting: Hello
    steps:
      - name: "Say Hello Mona it's Monday"
        if: ${{ env.DAY_OF_WEEK == 'Monday' }}
        run: echo "$Greeting $First_Name. Today is $DAY_OF_WEEK!"
        env:
          First_Name: Mona

En esta modificación del primer ejemplo, hemos introducido un valor if condicional. Ahora, el paso del flujo de trabajo solo se ejecuta si DAY_OF_WEEK está establecido en "Monday". Accedemos a este valor desde la instrucción condicional if mediante el contexto env.

Nota: Normalmente, los contextos se denotan con el signo del dólar y las llaves, como ${{ context.property }}. En un condicional if, ${{ y }} son opcionales, pero si los usa, deben incluir toda la instrucción de comparación, como se muestra anteriormente.

Habitualmente, utilizarás el contexto env o github para acceder a los valores de variables en partes del flujo de trabajo que se procesan antes de que los trabajos se envíen a los ejecutores.

ContextCaso de usoEjemplo
envReferencia las variables personalizadas que se definen en el flujo de trabajo.${{ env.MY_VARIABLE }}
githubReferenciar información sobre la ejecución de flujo de trabajo y el evento que activó dicha ejecución.${{ github.repository }}

Variables de entorno predeterminadas

Las variables de ambiente predeterminadas que configura GitHub están disponibles para cada paso en un flujo de trabajo.

Dado que las variables de entorno predeterminadas las establece GitHub y no se definen en un flujo de trabajo, no son accesibles a través del contexto env. Sin embargo, la mayoría de las variables predeterminadas tienen una propiedad de contexto correspondiente y con un nombre similar. Por ejemplo, el valor de la variable GITHUB_REF se puede leer durante el procesamiento del flujo de trabajo mediante la propiedad de contexto ${{ github.ref }}.

No se puede sobrescribir el valor de las variables de entorno predeterminadas GITHUB_* y RUNNER_*. Actualmente, se puede sobrescribir el valor de la variable CI. Sin embargo, no se garantiza que sea posible siempre. Para obtener más información sobre cómo establecer variables de entorno, consulta "Definición de variables de entorno para un único flujo de trabajo" y "Comandos de flujo de trabajo para Acciones de GitHub".

Te recomendamos encarecidamente que las acciones usen variables para acceder al sistema de archivos en lugar de usar rutas de archivo codificadas de forma rígida. GitHub establece variables para que las acciones se utilicen en todos los entornos del ejecutador.

VariableDescripción
CISiempre se establece en true.
GITHUB_ACTIONNombre de la acción actualmente en ejecución, o bien el valor id de un paso. Por ejemplo, para una acción, __repo-owner_name-of-action-repo.

GitHub quita caracteres especiales y usa el nombre __run cuando el paso actual ejecuta un script sin id. Si utilizas el mismo script o acción más de una vez en el mismo job, el nombre incluirá un sufijo que consiste del número de secuencia precedido por un guión bajo. Por ejemplo, el primer script que ejecute tendrá el nombre __run y el segundo el nombre __run_2. Del mismo modo, la segunda invocación de actions/checkout será actionscheckout2.
GITHUB_ACTION_PATHLa ruta donde se ubica una acción. Esta propiedad solo es compatible en las acciones compuestas. Puedes utilizar esta ruta para acceder a los archivos que se ubican en el mismo repositorio que la acción. Por ejemplo: /home/runner/work/_actions/repo-owner/name-of-action-repo/v1.
GITHUB_ACTION_REPOSITORYEn el caso de un paso que ejecuta una acción, este es el propietario y el nombre de repositorio de la acción. Por ejemplo: actions/checkout.
GITHUB_ACTIONSDefínalo siempre en true cuando GitHub Actions esté ejecutando el flujo de trabajo. Puedes usar esta variable para diferenciar cuando las pruebas se ejecutan de forma local o mediante GitHub Actions.
GITHUB_ACTOREl nombre de la persona o de la aplicación que inició el flujo de trabajo. Por ejemplo: octocat.
GITHUB_API_URLDevuelve la dirección URL de la API. Por ejemplo: https://HOSTNAME/api/v3.
GITHUB_BASE_REFEl nombre de la ref base o rama de destino de la solicitud de incorporación de cambios en una ejecución de flujo de trabajo. Esto solo se establece cuando el evento que desencadena una ejecución de flujo de trabajo es pull_request o pull_request_target. Por ejemplo: main.
GITHUB_ENVLa ruta en el ejecutor al archivo que define las variables desde los comandos del flujo de trabajo. Este archivo es único para el paso actual y cambia para cada paso en un job. Por ejemplo: /home/runner/work/_temp/_runner_file_commands/set_env_87406d6e-4979-4d42-98e1-3dab1f48b13a. Para obtener más información, vea «Comandos de flujo de trabajo para Acciones de GitHub».
GITHUB_EVENT_NAMEEl nombre del evento que desencadenó el flujo de trabajo. Por ejemplo, workflow_dispatch.
GITHUB_EVENT_PATHLa ruta de acceso al archivo en el ejecutor que contiene toda la carga útil del webhook del evento. Por ejemplo, /github/workflow/event.json.
GITHUB_GRAPHQL_URLDevuelve la dirección URL de la API de GraphQL. Por ejemplo: https://HOSTNAME/api/graphql.
GITHUB_HEAD_REFLa ref de encabezado de la rama de origen de la solicitud de incorporación de cambios en una ejecución de flujo de trabajo. Esta propiedad solo se establece cuando el evento que desencadena una ejecución de flujo de trabajo es pull_request o pull_request_target. Por ejemplo: feature-branch-1.
GITHUB_JOBEl job_id del trabajo actual. Por ejemplo, greeting_job.
GITHUB_OUTPUTLa ruta en el ejecutor al archivo que define las las salidas del paso actual desde los comandos del flujo de trabajo. Este archivo es único para el paso actual y cambia para cada paso en un job. Por ejemplo, /home/runner/work/_temp/_runner_file_commands/set_output_a50ef383-b063-46d9-9157-57953fc9f3f0. Para obtener más información, vea «Comandos de flujo de trabajo para Acciones de GitHub».
GITHUB_PATHLa ruta de acceso en el ejecutor al archivo que establece las variables PATH del sistema desde los comandos del flujo de trabajo. Este archivo es único para el paso actual y cambia para cada paso en un job. Por ejemplo: /home/runner/work/_temp/_runner_file_commands/add_path_899b9445-ad4a-400c-aa89-249f18632cf5. Para obtener más información, vea «Comandos de flujo de trabajo para Acciones de GitHub».
GITHUB_REFReferencia de formato completo de la rama o etiqueta que desencadenó la ejecución del flujo de trabajo. En el caso de los flujos de trabajo desencadenados por push, se trata de la rama o la etiqueta ref que se insertó. En el caso de los flujos de trabajo desencadenados por pull_request, se trata de la rama de combinación de solicitudes de incorporación de cambios. En el caso de los flujos de trabajo desencadenados por release, se trata de la etiqueta de versión creada. Para otros desencadenadores, se trata de la rama o la etiqueta ref que desencadenó la ejecución del flujo de trabajo. Esto solo se configura si una rama o etiqueta se encuentra disponible para el tipo de evento. La etiqueta ref especificada tiene el formato completo, lo que significa que para las ramas el formato es refs/heads/<branch_name>, para las solicitudes de incorporación de cambios es refs/pull/<pr_number>/mergey para las etiquetas es refs/tags/<tag_name>. Por ejemplo, refs/heads/feature-branch-1.
GITHUB_REF_NAMENombre de referencia corto de la rama o etiqueta que desencadenó la ejecución del flujo de trabajo. Este valor coincide con el nombre de la rama o etiqueta que se muestra en GitHub. Por ejemplo, feature-branch-1.
GITHUB_REF_PROTECTEDtrue si se han configurado protecciones de rama para la referencia que ha desencadenado la ejecución de flujo de trabajo.
GITHUB_REF_TYPEEl tipo de ref que activó la ejecución de flujo de trabajo. Los valores válidos son branch y tag.
GITHUB_REPOSITORYNombre del propietario y del repositorio. Por ejemplo, octocat/Hello-World.
GITHUB_REPOSITORY_OWNERNombre del propietario del repositorio. Por ejemplo, octocat.
GITHUB_RETENTION_DAYSNúmero de días que se conservan los artefactos y los registros de ejecución del flujo de trabajo. Por ejemplo: 90.
GITHUB_RUN_ATTEMPTNúmero único para cada intento de ejecución de un flujo de trabajo particular en un repositorio. Este número comienza en 1 para el primer intento de ejecución del flujo de trabajo e incrementa con cada re-ejecución. Por ejemplo: 3.
GITHUB_RUN_IDUn número único para cada ejecución de flujo de trabajo dentro de un repositorio. Este número no cambia si vuelves a ejecutar el flujo de trabajo. Por ejemplo, 1658821493.
GITHUB_RUN_NUMBERUn número único para cada ejecución de un flujo de trabajo particular en un repositorio. Este número comienza por 1 para la primera ejecución del flujo de trabajo y aumenta con cada nueva ejecución. Este número no cambia si vuelves a ejecutar el flujo de trabajo. Por ejemplo, 3.
GITHUB_SERVER_URLDirección URL del servidor de GitHub AE. Por ejemplo: https://HOSTNAME.
GITHUB_SHAEl SHA de confirmación que activó el flujo de trabajo. El valor de este SHA de confirmación depende del evento que activó el flujo de trabajo. Para obtener más información, vea «Eventos que desencadenan flujos de trabajo». Por ejemplo, ffac537e6cbbf934b08745a378932722df287a53.
GITHUB_STEP_SUMMARYLa ruta de acceso del ejecutor al archivo que contiene resúmenes de trabajos de comandos de flujo de trabajo. Este archivo es único para el paso actual y cambia para cada paso en un job. Por ejemplo: /home/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c. Para obtener más información, vea «Comandos de flujo de trabajo para Acciones de GitHub».
GITHUB_WORKFLOWEl nombre del flujo de trabajo. Por ejemplo: My test workflow. Si el archivo de flujo de trabajo no especifica ninguna name, el valor de esa variable es la ruta completa del archivo del flujo de trabajo en el repositorio.
GITHUB_WORKSPACEEl directorio de trabajo predeterminado en el ejecutor para los pasos y la ubicación predeterminada del repositorio al usar la acción checkout. Por ejemplo: /home/runner/work/my-repo-name/my-repo-name.
RUNNER_ARCHLa arquitectura del ejecutor que ejecuta el job. Los valores posibles son X86, X64, ARM o ARM64.
RUNNER_DEBUGEsto solo se establece si el registro de depuración está habilitado y siempre tiene el valor de 1. Puede ser útil como indicador para habilitar la depuración adicional o el registro detallado en tus propios pasos de trabajo.
RUNNER_NAMEEl nombre del ejecutor que ejecuta el job. Por ejemplo, Hosted Agent
RUNNER_OSEl sistema operativo del ejecutor que ejecuta el trabajo. Los valores posibles son Linux, Windows o macOS. Por ejemplo, Windows
RUNNER_TEMPLa ruta a un directorio temporal en el ejecutor. Este directorio se vacía al inicio y al final de cada job. Nota que los archivos no se eliminarán si la cuenta de usuario del ejecutor no tiene permisos para borrarlos. Por ejemplo, D:\a\_temp

Nota: Si necesitas usar la dirección URL de la ejecución de un flujo de trabajo desde un trabajo, puedes combinar estas variables: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID

Detectar el sistema operativo

Puede generar un único archivo de flujo de trabajo que se pueda usar para distintos sistemas operativos mediante la variable de entorno predeterminada RUNNER_OS y la propiedad de contexto correspondiente ${{ runner.os }}. Por ejemplo, el siguiente flujo de trabajo puede ejecutarse correctamente si ha cambiado el sistema operativo de macos-latest a windows-latest sin tener que alterar la sintaxis de las variables de entorno, lo cual difiere dependiendo del shell que esté utilizando el ejecutor.

YAML
jobs:
  if-Windows-else:
    runs-on: macos-latest
    steps:
      - name: condition 1
        if: runner.os == 'Windows'
        run: echo "The operating system on the runner is $env:RUNNER_OS."
      - name: condition 2
        if: runner.os != 'Windows'
        run: echo "The operating system on the runner is not Windows, it's $RUNNER_OS."

En este ejemplo, las dos instrucciones if comprueban la propiedad os del contexto runner para determinar el sistema operativo del ejecutor. GitHub Actions procesa los condicionales if y solo los pasos en donde la comprobación se resuelve de manera que se envían los true al ejecutor. Una de las comprobaciones siempre será true y la otra false, por lo que solo se envía uno de estos pasos al ejecutor. Una vez enviado el trabajo al ejecutor, el paso se ejecuta y la variable de entorno del comando echo se interpola mediante la sintaxis adecuada ($env:NAME para PowerShell en Windows y $NAME para bash y sh en Linux y MacOS). En este ejemplo, la instrucción runs-on: macos-latest significa que se ejecutará el segundo paso.

Pasar valores entre pasos y jobs en un flujo de trabajo

Si genera un valor en un paso de un trabajo, puede utilizar dicho valor en los pasos siguientes del mismo trabajo. Para ello, asigne el valor a una variable de entorno nueva o existente y escriba lo siguiente en el archivo de entorno GITHUB_ENV. Una acción puede utilizar directamente el archivo de entorno, o puede utilizarse desde un comando de shell en el archivo de flujo de trabajo con la palabra clave run. Para obtener más información, vea «Comandos de flujo de trabajo para Acciones de GitHub».

Si quieres pasar un valor desde un paso en un job que está en un flujo de trabajo a un paso en otro job del mismo flujo de trabajo, puedes definir el valor como una salida de job. Puedes entonces referenciar esta salida de job desde un paso en otro job. Para obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».