Contextos

Puedes acceder a información de contexto en los flujos de trabajo y acciones.

Nota: Los ejecutores hospedados en GitHub no son compatibles con GitHub Enterprise Server actualmente. Puedes encontrar más información sobre el soporte que se tiene planeado en el futuro en el Itinerario público de GitHub.

Acerca de los contextos

Advertencia: Cuando crees flujos de trabajo y acciones siempre debes considerar si tu código podría ejecutar entradas no confiables de atacantes potenciales. Se tratará a algunos contextos como una entrada no confiable, ya que un atacante podrían insertar su propio contenido malintencionado. Para obtener más información, consulta la sección "Entenderel riesgo de las inyecciones de scripts".

Los contextos son una manera de acceder a información acerca de las ejecuciones de flujo de trabajo, los entornos del ejecutor, los trabajos y los pasos. Los contextos usan la sintaxis de expresión. Para obtener más información, consulta la sección "Expresiones".

${{ <context> }}

Nombre del contextoTypeDescripción
githubobjetoInformación sobre la ejecución del flujo de trabajo. Para obtener más información, consulta github context.
envobjetoContiene variables de entorno establecidas en un flujo de trabajo, trabajo o paso. Para obtener más información, consulta el contexto env.
jobobjetoInformación sobre el trabajo actualmente en ejecución. Para obtener más información, consulta contexto de job.
pasosobjetoInformación sobre los pasos que se han ejecutado en este trabajo. Para obtener más información, consulta contexto de steps.
runnerobjetoIncluye información sobre el ejecutor que está realizando el trabajo actual. Para más información, consulta Contexto del ejecutador (runner).
secretsobjetoHabilita el acceso a los secretos. Para más información sobre secretos, consulta "Creando y usando secretos encriptados."
strategyobjetoBrinda acceso a los parámetros de estrategia configurados y a la información sobre el puesto actual. Los parámetros de estrategia incluyen fail-fast, job-index, job-total y max-parallel.
matrixobjetoBrinda acceso a los parámetros de la matriz que configuraste para el puesto actual. Por ejemplo, si configuraste una matriz de construcción con las versiones os y node, el objeto de contexto matrix incluye las versiones os y node del puesto actual.
needsobjetoHabilita el acceso de las salidas de todos los jobs que se definen como una dependencia para el job actual. Para obtener más información, consulta needs context.

Como parte de una expresión, puedes acceder a la información del contexto usando una de las siguientes dos sintaxis.

  • Sintaxis de índice: github['sha']
  • Sintaxis de desreferencia de propiedad: github.sha

Para usar la sintaxis de desreferencia de propiedad, el nombre de la propiedad debe cumplir con lo siguiente:

  • comenzar con a-Z o _.
  • estar seguida por a-Z 0-9 - o _.

Determinar cuándo utilizar contextos

GitHub Actions incluye una colección de variables que se llama contextos y una recopilación de variables similar que se llaman variables de ambiente predeterminadas. Estas variables se pretenden utilizar en puntos diferentes del flujo de trabajo:

  • Variables de ambiente predeterminadas: Estas variables existen únicamente en el ejecutor que está ejecutando tu job. Para obtener más información, consulta la sección "Variables de ambiente predeterminadas."
  • Contextos: Puedes utilizar la mayoría de los contextos en cualquier punto de tu flujo de trabajo, incluyendo cuando no estén disponibles las variables de ambiente predeterminadas. Por ejemplo, puedes utilizar contextos con expresiones para llevar a cabo un procesamiento inicial antes de que el job se enrute a un ejecutor para su exclusión; esto te permite utilizar un contexto con la palabra clave condicional if para determinar si se debería ejecutar un paso. Una vez que el job se esté ejecutando, también debes recuperar las variables de contexto para el ejecutor que está ejecutando el trabajo, tal como runner.os. Para encontrar más detalles de dónde puedes utilizar contextos diversos dentro de un flujo de trabajo, consulta "Disponibilidad de contexto".

El siguiente ejemplo ilustra cómo estos tipos de variables de ambiente diferentes pueden utilizarse juntas en el job:

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"

En este ejemplo, el contexto de la declaración if verifica el contexto de github.ref para determinar el nombre de rama actual; si el nombre es refs/heads/main, entonces los siguientes pasos subsecuentes se ejecutarán. El if verifica que se encuentre procesado por GitHub Actions, y que el job solo se envíe al ejecutor si el resultado es Verdadero. Una vez que se envía el job al ejecutor, se ejecuta el paso y se refiere al ambiente de variables $GITHUB_REF para el ejecutor.

contexto de github

El contexto de github contiene información sobre la ejecución del flujo de trabajo y el evento que desencadenó la ejecución. Puedes leer la mayoría de los datos de contexto de github en las variables del entorno. Para más información sobre las variables de entorno, consulta "Utilizando variables de entorno."

Advertencia: Cuando utilizas todo el contexto de GitHub, cuida que incluya la información sensible tal como un github.token. GitHub enmascara secretos cuando se imprimen en la consola, pero debes tener cuidado cuando exportes o imprimas el contexto.

Advertencia: Cuando crees flujos de trabajo y acciones siempre debes considerar si tu código podría ejecutar entradas no confiables de atacantes potenciales. Se tratará a algunos contextos como una entrada no confiable, ya que un atacante podrían insertar su propio contenido malintencionado. Para obtener más información, consulta la sección "Entenderel riesgo de las inyecciones de scripts".

Nombre de la propiedadTypeDescripción
githubobjetoEl contexto de nivel superior disponible durante cualquier trabajo o paso en un flujo de trabajo.
github.actionsecuenciaEl nombre de la acción que se está ejecutando actualmente. GitHub elimina caracteres especiales o usa el nombre __run cuando el paso actual ejecuta un script. Si utilizas la misma acción más de una vez en el mismo job, el nombre incluirá un sufijo con el número de secuencia con un guion bajo antes de este. Por ejemplo, el primer script que ejecutes tendrá el nombre __run, y el segundo script será nombrado __run_2. Del mismo modo, la segunda invocación de actions/checkout será actionscheckout2.
github.action_pathsecuenciaLa ruta en donde se ubica tu acción. Puedes utilizar esta ruta para acceder fácilmente a los archivos ubicados en el mismo repositorio que tu acción. Este atributo solo es compatible en las acciones compuestas.
github.actorsecuenciaEl inicio de sesión del usuario que inició la ejecución del flujo de trabajo.
github.base_refsecuenciaLa rama head_ref o fuente de la solicitud de extracción en una ejecución de flujo de trabajo. Esta propiedad solo está disponible cuando el evento que activa una ejecución de flujo de trabajo es ya sea pull_request o pull_request_target.
github.eventobjetoLa carga de webhook del evento completo. Para obtener más información, consulta "Eventos que activan los flujos de trabajo". "Puedes acceder a propiedades individuales del evento que utiliza este contexto.
github.event_namesecuenciaEl nombre del evento que activó la ejecución del flujo de trabajo.
github.event_pathsecuenciaLa ruta a la carga del webhook del evento completo en el ejecutor.
github.head_refsecuenciaLa rama head_ref o fuente de la solicitud de extracción en una ejecución de flujo de trabajo. Esta propiedad solo está disponible cuando el evento que activa una ejecución de flujo de trabajo es ya sea pull_request o pull_request_target.
github.jobsecuenciaEl job_id del job actual.
github.refsecuenciaLa rama o ref de etiqueta que activó la ejecución del flujo de trabajo. Para las ramas, este es el formato refs/heads/<branch_name> y, para las etiquetas, es refs/tags/<tag_name>.
github.repositorysecuenciaEl nombre del repositorio y del propietario. Por ejemplo, Codertocat/Hello-World.
github.repository_ownersecuenciaEl nombre del propietario del repositorio. Por ejemplo, Codertocat.
github. run_idsecuenciaUn número único para cada ejecución dentro de un repositorio. Este número no cambia si vuelves a ejecutar el flujo de trabajo.
github. run_numbersecuenciaUn número único para cada ejecución de un flujo de trabajo particular en un repositorio. Este número comienza en 1 para los flujos de trabajo que se ejecutan primero, e incrementa con cada ejecución nueva. Este número no cambia si vuelves a ejecutar el flujo de trabajo.
github.run_attemptsecuenciaUn nú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.
github.server_urlsecuenciaDevuelve la URL al servidor de GitHub. Por ejemplo: https://github.com.
github.shasecuenciaEl SHA de confirmación que activó la ejecución del flujo de trabajo.
github.tokensecuenciaUn token para autenticar en nombre de la aplicación de GitHub instalada en tu repositorio. Esto es funcionalmente equivalente al secreto de GITHUB_TOKEN. Para más información, consulta "Autenticando con el GITHUB_TOKEN."
github.workflowsecuenciaEl nombre del flujo de trabajo. Si el archivo de flujo de trabajo no especifica un nombre, el valor de esta propiedad es la ruta completa del archivo del flujo de trabajo en el repositorio.
github.workspacesecuenciaEl directorio de trabajo predeterminado para los pasos y la ubicación predeterminada de tu repositorio cuando usas la acción checkout.

contexto de env

El contexto de Env contiene las variables de entorno que se han establecido en un flujo de trabajo, puesto o paso. Para obtener más información acerca de la configuración de variables de entorno en tu flujo de trabajo, consulta "Sintaxis de flujo de trabajo para GitHub Actions".

La sintaxis de contexto env te permite usar el valor de una variable de entorno en tu archivo de flujo de trabajo. Puedes utilizar el contexto env en el valor de cualquier clave en un paso, con excepción de las claves id y uses. Para obtener más información sobre la sintaxis del paso, consulta "Sintaxis de flujo de trabajo para GitHub Actions".

Si quieres usar el valor de una variable de entorno dentro de un ejecutor, usa el método normal del sistema operativo del ejecutor para leer las variables de entorno.

Nombre de la propiedadTypeDescripción
envobjetoEste contexto cambia para cada paso de un trabajo. Puedes acceder a este contexto desde cualquier paso en un trabajo.
Env.<env_name>secuenciaEl valor de una variable de entorno específica.

contexto de job

El contexto de job contiene información sobre el trabajo de ejecución actual.

Nombre de la propiedadTypeDescripción
jobobjetoEste contexto cambia para cada trabajo de una ejecución de flujo de trabajo. Puedes acceder a este contexto desde cualquier paso en un trabajo.
job.containerobjetoInformación sobre el contenedor del trabajo. Para obtener más información sobre los contenedores, consulta "Sintaxis de flujo de trabajo para GitHub Actions".
job.container.idsecuenciaLa Id de la red del contenedor.
job.container.networksecuenciaLa Id. de la red del contenedor. El ejecutor crea la red usada por todos los contenedores en un trabajo.
job.servicesobjetoLos contenedores de servicio creados para un trabajo. Para obtener más información sobre los contenedores de servicios, consulta "Sintaxis de flujo de trabajo para GitHub Actions".
job.services.<service id>.idsecuenciaLa Id del contenedor de servicio.
job.services.<service id>.networksecuenciaLa Id. de la red del contenedor de servicios. El ejecutor crea la red usada por todos los contenedores en un trabajo.
job.services.<service id>.portsobjetoLos puertos expuestos del contenedor del servicio.
job.statussecuenciaEl estado actual del trabajo. Los valores posibles son success, failure o cancelled.

contexto de steps

El contexto de steps contiene información sobre los pasos del trabajo actual que ya se han ejecutado.

Nombre de la propiedadTypeDescripción
pasosobjetoEste contexto cambia para cada paso de un trabajo. Puedes acceder a este contexto desde cualquier paso en un trabajo.
steps.<step id>.outputsobjetoEl conjunto de salidas definido para el paso. Para obtener más información, consulta "Sintaxis de metadatos para GitHub Actions".
steps.<step id>.conclusionsecuenciaEl resultado de un paso completado después de que se aplica continue-on-error. Los valores posibles son success, failure, cancelled, o skipped. Cuando falla un paso de continue-on-error, el outcome es failure, pero la conclusion final es success.
steps.<step id>.outcomesecuenciaEl resultado de un paso completado antes de que se aplique continue-on-error. Los valores posibles son success, failure, cancelled, o skipped. Cuando falla un paso de continue-on-error, el outcome es failure, pero la conclusion final es success.
steps.<step id>.outputs.<output name>secuenciaEl valor de un resultado específico.

Contexto de runner

El contexto de runner contiene información sobre el ejecutor que está ejecutando el trabajo actual.

Nombre de la propiedadTypeDescripción
runner.namesecuenciaEl nombre del ejecutor que ejecuta el job.
runner.ossecuenciaEl sistema operativo del ejecutor que ejecuta el trabajo. Los valores posibles son Linux, Windows o macOS.
runner.tempsecuenciaLa 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.
runner.tool_cachesecuenciaLa ruta al directorio que contiene las herramientas preinstaladas para los ejecutores hospedados en GitHub. Para obtener más información, consulta la sección "Especificaciones para los ejecutores hospedados en GitHub".

Contexto needs

El contexto needs contiene salidas de todos los jobs que se definen como dependencia del job actual. Para obtener más información sobre la definición de dependencias de jobs, consulta la sección "Sintaxis de flujos de trabajo para GitHub Actions".

Nombre de la propiedadTypeDescripción
needs.<job id>objetoUn solo job del cual depende el job actual.
needs.<job id>.outputsobjetoEl conjunto de resultados de un job del cual depende el job actual.
needs.<job id>.outputs.<output name>secuenciaEl valor de un resultado específico para un job del cual depende el job actual.
needs.<job id>.resultsecuenciaEl resultado de un job del cual depende el job actual. Los valores posibles son success, failure, cancelled, o skipped.

Ejemplo de impresión de información de contexto de un archivo de registro

Para revisar la información accesible en cada contexto, puedes utilizar este ejemplo de archivo de flujo de trabajo.

Advertencia: Cuando utilizas todo el contexto de GitHub, cuida que incluya la información sensible tal como un github.token. GitHub enmascara secretos cuando se imprimen en la consola, pero debes tener cuidado cuando exportes o imprimas el contexto.

.github/workflows/main.yml

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"

Disponibilidad de contexto

Hay diferentes contextos disponibles a lo largo de un ejecutor de flujo de trabajo. Por ejemplo, el contexto secrets solo puede utilizarse en algunos lugares dentro de un job.

Adicionalmente, algunas funcionalidades solo pueden utilizarse en algunos lugares. Por ejemplo, la función hashFiles no está disponible en todas partes.

La siguiente tabla indica si cada contexto y fución especial puede utilizarse dentro de un flujo de trabajo. A menos de que se liste a continuación, las funciones se pueden utilizar donde sea.

RutaContextoFunciones especiales
concurrencygithub
envgithub, secretos
jobs.<job_id>.concurrencygithub, necesidades, estrategia, matriz
jobs.<job_id>.containergithub, necesidades, estrategia, matriz
jobs.<job_id>.container.credentialsgithub, necesidades, estrategia, matriz, env, secretos
jobs.<job_id>.container.env.<env_id>github, necesidades, estrategia, matriz, job, ejecutar, env, secretos
jobs.<job_id>.continue-on-errorgithub, necesidades, estrategia, matriz
jobs.<job_id>.defaults.rungithub, necesidades, estrategia, matriz, env
jobs.<job_id>.envgithub, necesidades, estrategia, matriz, secretos
jobs.<job_id>.environmentgithub, necesidades, estrategia, matriz
jobs.<job_id>.environment.urlgithub, necesidades, estrategia, matriz, job, ejecutor, env, pasos
jobs.<job_id>.ifgithub, necesidadessiempre, cancellado, éxito, fallo
jobs.<job_id>.namegithub, necesidades, estrategia, matriz
jobs.<job_id>.outputs.<output_id>github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos
jobs.<job_id>.runs-ongithub, necesidades, estrategia, matriz
jobs.<job_id>.servicesgithub, necesidades, estrategia, matriz
jobs.<job_id>.services.<service_id>.credentialsgithub, necesidades, estrategia, matriz, env, secretos
jobs.<job_id>.services.<service_id>.env.<env_id>github, necesidades, estrategia, matriz, job, ejecutar, env, secretos
jobs.<job_id>.steps.continue-on-errorgithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.steps.envgithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.steps.ifgithub, necesidades, estrategia, matriz, job, ejecutor, env, pasossiempre, cancelado, éxito, fallo, hashFiles
jobs.<job_id>.steps.namegithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.steps.rungithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.steps.timeout-minutesgithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.steps.withgithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.steps.working-directorygithub, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasoshashFiles
jobs.<job_id>.strategygithub, necesidades
jobs.<job_id>.timeout-minutesgithub, necesidades, estrategia, matriz

¿Te ayudó este documento?

Política de privacidad

¡Ayúdanos a hacer geniales estos documentos!

Todos los documentos de GitHub son de código abierto. ¿Notas algo que esté mal o que no sea claro? Emite una solicitud de cambios.

Haz una contribución

O, aprende cómo contribuir.