Nota: GitHub Actions estuvo disponible para GitHub Enterprise Server 2.22 como un beta limitado. El beta terminó. GitHub Actions está ahora disponible habitualmente en GitHub Enterprise Server 3.0 o superior. Para obtener más información, consulta la sección de notas de lanzamiento para GitHub Enterprise Server 3.0.
- Para obtener más información acerca de cómo mejorar a GitHub Enterprise Server 3.0 o superior, consulta la sección "Mejorar a GitHub Enterprise Server".
- Para obtener más información acerca de configurar las GitHub Actions después de tu mejora, consulta la documentación de GitHub Enterprise Server 3.0.
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 contexto | Type | Descripción |
---|---|---|
github | objeto | Información sobre la ejecución del flujo de trabajo. Para obtener más información, consulta github context. |
env | objeto | Contiene variables de entorno establecidas en un flujo de trabajo, trabajo o paso. Para obtener más información, consulta el contexto env . |
job | objeto | Información sobre el trabajo actualmente en ejecución. Para obtener más información, consulta contexto de job . |
pasos | objeto | Información sobre los pasos que se han ejecutado en este trabajo. Para obtener más información, consulta contexto de steps . |
runner | objeto | Incluye información sobre el ejecutor que está realizando el trabajo actual. Para más información, consulta Contexto del ejecutador (runner) . |
secrets | objeto | Habilita el acceso a los secretos. Para más información sobre secretos, consulta "Creando y usando secretos encriptados." |
strategy | objeto | Brinda 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 . |
matrix | objeto | Brinda 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. |
needs | objeto | Habilita 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 comorunner.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 propiedad | Type | Descripción |
---|---|---|
github | objeto | El contexto de nivel superior disponible durante cualquier trabajo o paso en un flujo de trabajo. |
github.action | secuencia | El 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_path | secuencia | La 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.actor | secuencia | El inicio de sesión del usuario que inició la ejecución del flujo de trabajo. |
github.base_ref | secuencia | La 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.event | objeto | La 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_name | secuencia | El nombre del evento que activó la ejecución del flujo de trabajo. |
github.event_path | secuencia | La ruta a la carga del webhook del evento completo en el ejecutor. |
github.head_ref | secuencia | La 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.job | secuencia | El job_id del job actual. |
github.ref | secuencia | La 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.repository | secuencia | El nombre del repositorio y del propietario. Por ejemplo, Codertocat/Hello-World . |
github.repository_owner | secuencia | El nombre del propietario del repositorio. Por ejemplo, Codertocat . |
github. run_id | secuencia | Un 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_number | secuencia | Un 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_attempt | secuencia | Un 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_url | secuencia | Devuelve la URL al servidor de GitHub. Por ejemplo: https://github.com . |
github.sha | secuencia | El SHA de confirmación que activó la ejecución del flujo de trabajo. |
github.token | secuencia | Un 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.workflow | secuencia | El 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.workspace | secuencia | El 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 propiedad | Type | Descripción |
---|---|---|
env | objeto | Este contexto cambia para cada paso de un trabajo. Puedes acceder a este contexto desde cualquier paso en un trabajo. |
Env.<env_name> | secuencia | El 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 propiedad | Type | Descripción |
---|---|---|
job | objeto | Este 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.container | objeto | Informació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.id | secuencia | La Id de la red del contenedor. |
job.container.network | secuencia | La Id. de la red del contenedor. El ejecutor crea la red usada por todos los contenedores en un trabajo. |
job.services | objeto | Los 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>.id | secuencia | La Id del contenedor de servicio. |
job.services.<service id>.network | secuencia | La 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>.ports | objeto | Los puertos expuestos del contenedor del servicio. |
job.status | secuencia | El 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 propiedad | Type | Descripción |
---|---|---|
pasos | objeto | Este contexto cambia para cada paso de un trabajo. Puedes acceder a este contexto desde cualquier paso en un trabajo. |
steps.<step id>.outputs | objeto | El conjunto de salidas definido para el paso. Para obtener más información, consulta "Sintaxis de metadatos para GitHub Actions". |
steps.<step id>.conclusion | secuencia | El 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>.outcome | secuencia | El 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> | secuencia | El 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 propiedad | Type | Descripción |
---|---|---|
runner.name | secuencia | El nombre del ejecutor que ejecuta el job. |
runner.os | secuencia | El sistema operativo del ejecutor que ejecuta el trabajo. Los valores posibles son Linux , Windows o macOS . |
runner.temp | secuencia | La 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_cache | secuencia | La 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 propiedad | Type | Descripción |
---|---|---|
needs.<job id> | objeto | Un solo job del cual depende el job actual. |
needs.<job id>.outputs | objeto | El conjunto de resultados de un job del cual depende el job actual. |
needs.<job id>.outputs.<output name> | secuencia | El valor de un resultado específico para un job del cual depende el job actual. |
needs.<job id>.result | secuencia | El 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.
Ruta | Contexto | Funciones especiales |
---|---|---|
concurrency | github | |
env | github, secretos | |
jobs.<job_id>.concurrency | github, necesidades, estrategia, matriz | |
jobs.<job_id>.container | github, necesidades, estrategia, matriz | |
jobs.<job_id>.container.credentials | github, 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-error | github, necesidades, estrategia, matriz | |
jobs.<job_id>.defaults.run | github, necesidades, estrategia, matriz, env | |
jobs.<job_id>.env | github, necesidades, estrategia, matriz, secretos | |
jobs.<job_id>.environment | github, necesidades, estrategia, matriz | |
jobs.<job_id>.environment.url | github, necesidades, estrategia, matriz, job, ejecutor, env, pasos | |
jobs.<job_id>.if | github, necesidades | siempre, cancellado, éxito, fallo |
jobs.<job_id>.name | github, necesidades, estrategia, matriz | |
jobs.<job_id>.outputs.<output_id> | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | |
jobs.<job_id>.runs-on | github, necesidades, estrategia, matriz | |
jobs.<job_id>.services | github, necesidades, estrategia, matriz | |
jobs.<job_id>.services.<service_id>.credentials | github, 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-error | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.steps.env | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.steps.if | github, necesidades, estrategia, matriz, job, ejecutor, env, pasos | siempre, cancelado, éxito, fallo, hashFiles |
jobs.<job_id>.steps.name | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.steps.run | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.steps.timeout-minutes | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.steps.with | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.steps.working-directory | github, necesidades, estrategia, matriz, job, ejecutor, env, secretos, pasos | hashFiles |
jobs.<job_id>.strategy | github, necesidades | |
jobs.<job_id>.timeout-minutes | github, necesidades, estrategia, matriz |