Flujos de trabajo reutilizables
Información de referencia para flujos de trabajo reutilizables.
Acceso a los flujos de trabajo reutilizables
Otros flujos de trabajo pueden usar uno reutilizable si se cumple alguna de las siguientes condiciones:
-
Ambos flujos de trabajo están en el mismo repositorio.
-
El flujo de trabajo denominado se almacena en un repositorio público en GitHub Enterprise Server.
No se pueden usar directamente flujos de trabajo reutilizables definidos en GitHub.com. En su lugar, almacene una copia del flujo de trabajo reutilizable en tu instancia de GitHub Enterprise Servery llame al flujo de trabajo desde esa ruta de acceso.
-
El flujo de trabajo llamado se almacena en un repositorio interno y los ajustes de dicho repositorio permiten que se acceda a él. Para obtener más información, consulte Compartir acciones y flujos de trabajo con tu empresa.
-
El flujo de trabajo que se llama se almacena en un repositorio privado y los ajustes de ese repositorio permiten que se acceda a él. Para obtener más información, consulte Compartir acciones y flujos de trabajo con tu empresa.
En la tabla siguiente se muestra la accesibilidad de los flujos de trabajo reutilizables a un flujo de trabajo de llamada, en función de la visibilidad del repositorio host.
| Repositorio del autor de la llamada | Repositorios de flujos de trabajo accesibles |
|---|---|
private |
`private`
, `internal`y`public` |
| |
| internal |
internal, y public |
| |
| public | public |
Los permisos de acciones de la página de configuración de acciones del repositorio de llamadores deben configurarse para permitir el uso de acciones y flujos de trabajo reutilizables; consulte Administración de la configuración de GitHub Actions para un repositorio.
Para repositorios internos o privados, la política de acceso en la página de configuración de Acciones del repositorio del flujo de trabajo llamado debe configurarse explícitamente para permitir el acceso desde repositorios que contienen flujos de trabajo que llaman; consulte Administración de la configuración de GitHub Actions para un repositorio.
Nota:
Para mejorar la seguridad, GitHub Actions no admite redireccionamientos de acciones o flujos de trabajo reutilizables. Esto significa que cuando se cambia el propietario, el nombre del repositorio de una acción o el nombre de una acción, cualquier flujo de trabajo que utilice esa acción con el nombre anterior dará error.
Limitaciones de los flujos de trabajo reutilizables
-
Puede conectar hasta cuatro niveles de flujos de trabajo. Para obtener más información, consulta "Anidamiento de flujos de trabajo reutilizables.
-
Puede llamar a un máximo de 20 flujos de trabajo únicos reutilizables a través de un único archivo de flujo de trabajo. Este límite incluye los árboles de flujos de trabajo reutilizables anidados a los que se puede llamar desde el archivo de flujo de trabajo del autor de llamada de nivel superior.
Por ejemplo, flujo-de-trabajo-del-autor-de-llamada-de-nivel-superior.yml → flujo-de-trabajo-llamado-1.yml → flujo-de-trabajo-llamado-2.yml cuenta como dos flujos de trabajo reutilizables.
-
Las variables de entorno que se configuren en un contexto
envy que se definan a nivel del flujo de trabajo que inicia la llamada no se propagan al flujo de trabajo que recibe la llamada. Para más información, consulta Almacenamiento de información en variables y Contextos de referencia. -
Del mismo modo, las variables de entorno establecidas en el contexto
env, definidas en el flujo de trabajo llamado, no son accesibles en el contextoenvdel flujo de trabajo del autor de la llamada. En su lugar, debe usar salidas del flujo de trabajo reutilizable. Para obtener más información, consulta Uso de salidas de un flujo de trabajo reutilizable. -
Para reutilizar variables en varios flujos de trabajo, debes establecerlas en los niveles de organización, repositorio o entorno, y hacer referencia a ellas mediante el contexto
vars. Para más información, consulte Almacenamiento de información en variables y Contextos de referencia. -
Los flujos de trabajo reutilizables se llaman directamente dentro de un trabajo y no desde dentro de un paso de trabajo. Por lo tanto, no puede usar
GITHUB_ENVpara pasar valores a los pasos del trabajo en el flujo de trabajo del autor de la llamada.
Palabras clave compatibles con los jobs que llaman a un flujo de trabajo reutilizable
Cuando llama a un flujo de trabajo reutilizable, solo puede utilizar las siguientes palabras clave en el job que contiene la llamada:
-
Nota:
- Si no se especifica
jobs.<job_id>.permissionsen el trabajo que inicia la llamada, el flujo de trabajo que la recibe tendrá los permisos predeterminados deGITHUB_TOKEN. Para más información, consulta Sintaxis del flujo de trabajo para GitHub Actions. - Los permisos de
GITHUB_TOKENque se trasladaron desde el flujo de trabajo que inició la llamada solo pueden reducirse (no aumentarse) a través del flujo de trabajo que recibió la llamada. - Si usa
jobs.<job_id>.concurrency.cancel-in-progress: true, no use el mismo valor parajobs.<job_id>.concurrency.groupen los flujos de trabajo de receptor de llamada y autor de llamada, ya que esto hará que el flujo de trabajo que ya se esté ejecutando se cancele. El flujo de trabajo llamado utiliza el nombre del flujo de trabajo que realiza la llamada en ${{ github.workflow }}, por lo que si se usa este contexto como valor dejobs.<job_id>.concurrency.grouptanto en el flujo de trabajo que hace la llamada como en al que llaman, el flujo de trabajo que realiza la llamada se cancelará cuando se ejecute el flujo de trabajo llamado.
- Si no se especifica
Uso de ejecutores en flujos de trabajo reutilizables
Ejecutores alojados en GitHub
La asignación de ejecutores alojados en GitHub siempre se evalúa usando solo el contexto del proceso o entidad que llama. La facturación de los ejecutores alojados en GitHub siempre está asociada al proceso o entidad que invoca. El flujo de trabajo del proceso o entidad que realiza la llamada no puede usar ejecutores alojados en GitHub a través del repositorio al que se llama. Para más información, consulta Ejecutores hospedados en GitHub.
Ejecutores autohospedados
Los flujos de trabajo que se llaman que pertenecen al mismo usuario o organización o empresa como el flujo de trabajo que realiza la llamada puede acceder a los ejecutores autohospedados según el contexto del proceso o entidad que invoca. Esto significa que el flujo de trabajo llamado puede acceder a los ejecutores auto-hospedados que están:
- En el repositorio del llamador
- En la organización o la empresa del repositorio que invoca, siempre que el ejecutor esté disponible para el repositorio que invoca
Acceso y permisos para flujos de trabajo anidados
Se producirá un error en un flujo de trabajo que contenga flujos de trabajo reutilizables anidados si alguno de los flujos de trabajo anidados no es accesible para el flujo de trabajo inicial del autor de la llamada. Para más información, consulta Acceso a flujos de trabajo reutilizables.
Los permisos `GITHUB_TOKEN` solo pueden ser los mismos o más restrictivos en los flujos de trabajo anidados. Por ejemplo, en la cadena de flujo de trabajo A > B > C, si el flujo de trabajo A tiene permiso de token `package: read`, entonces B y C no pueden tener permiso `package: write`. Para más información, consulta [AUTOTITLE](/actions/security-guides/automatic-token-authentication).
Para obtener información sobre cómo usar la API para determinar qué archivos de flujo de trabajo han participado en una ejecución de flujo de trabajo determinada, consulta Reutilización de flujos de trabajo.
Comportamiento de los flujos de trabajo reutilizables al volver a ejecutar trabajos
Se puede hacer referencia a flujos de trabajo reutilizables de repositorios públicos mediante SHA, una etiqueta de versión o un nombre de rama. Para más información, consulta Reutilización de flujos de trabajo.
Cuando se vuelve a ejecutar un flujo de trabajo que usa un flujo de trabajo reutilizable y la referencia no es SHA, hay algunos comportamientos que se deben tener en cuenta:
- Al volver a ejecutar todos los trabajos de un flujo de trabajo, se usará el flujo de trabajo reutilizable de la referencia especificada. Para más información sobre cómo volver a ejecutar todos los trabajos de un flujo de trabajo, consulta Volver a ejecutar flujos de trabajo y tareas.
- Volver a ejecutar trabajos con errores o un trabajo específico en un flujo de trabajo usará el flujo de trabajo reutilizable desde el mismo SHA de confirmación del primer intento. Para más información sobre cómo volver a ejecutar todos los trabajos con error de un flujo de trabajo, consulta Volver a ejecutar flujos de trabajo y tareas. Para más información sobre cómo volver a ejecutar un trabajo específico de un flujo de trabajo, consulta Volver a ejecutar flujos de trabajo y tareas.
Contexto github
Cuando un flujo de trabajo que inicia llamadas activa uno reutilizable, el contexto github siempre se asocia con el primer flujo. El flujo de trabajo al que se llama se le concede acceso automáticamente a github.token y secrets.GITHUB_TOKEN. Para obtener más información sobre el contexto de github, consulta Contextos de referencia.
Plantillas de flujos de trabajo
Información de referencia que se usará al crear plantillas de flujo de trabajo para tu organización.
Marcador de posición $default-branch
Si necesitas hacer referencia a la rama predeterminada de un repositorio, puedes usar el marcador de posición $default-branch en la plantilla de flujo de trabajo. Cuando un flujo de trabajo se crea, el marcador de posición se reemplazará automáticamente con el nombre de la rama predeterminada del repositorio.
Valores de marcador de posición en la clave runs-on
Los siguientes valores de la clave runs-on también se tratan como marcadores de posición:
-
`ubuntu-latest` se reemplaza por `[ self-hosted ]` -
`windows-latest` se reemplaza por `[ self-hosted, windows ]` -
`macos-latest"` se reemplaza por `[ self-hosted, macOS ]`
Ejemplo de archivo de plantilla de flujo de trabajo
Este archivo denominado octo-organization-ci.yml muestra un flujo de trabajo básico.
name: Octo Organization CI
on:
push:
branches: [ $default-branch ]
pull_request:
branches: [ $default-branch ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run a one-line script
run: echo Hello from Octo Organization
name: Octo Organization CI
on:
push:
branches: [ $default-branch ]
pull_request:
branches: [ $default-branch ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run a one-line script
run: echo Hello from Octo Organization
Requisitos del archivo de metadatos
El archivo de metadatos debe tener el mismo nombre que el archivo de flujo de trabajo, pero en lugar de la extensión .yml, se le tiene que anexar .properties.json. Por ejemplo, un archivo denominado octo-organization-ci.properties.json contiene los metadatos del archivo de flujo de trabajo denominado octo-organization-ci.yml.
{
"name": "Octo Organization Workflow",
"description": "Octo Organization CI workflow template.",
"iconName": "example-icon",
"categories": [
"Go"
],
"filePatterns": [
"package.json$",
"^Dockerfile",
".*\\.md$"
]
}
{
"name": "Octo Organization Workflow",
"description": "Octo Organization CI workflow template.",
"iconName": "example-icon",
"categories": [
"Go"
],
"filePatterns": [
"package.json$",
"^Dockerfile",
".*\\.md$"
]
}
-
`name` - **Obligatorio.** El nombre del flujo de trabajo. Esta se muestra en la lista de flujos de trabajo disponibles. -
`description` - **Obligatorio.** La descripción del flujo de trabajo. Esta se muestra en la lista de flujos de trabajo disponibles. -
`iconName` - **Opcional.** Especifica un icono para el flujo de trabajo que se muestra en la lista de flujos de trabajo. `iconName` puede ser uno de los siguientes tipos:- Un archivo SVG que se almacena en el directorio
workflow-templates. Para hacer referencia a un archivo, el valor debe ser el nombre de archivo sin la extensión de archivo. Por ejemplo, se hace referencia a un archivo SVG denominadoexample-icon.svgcomoexample-icon. - Un icono del conjunto de Octicons de GitHub. Para hacer referencia a un octicon, el valor debe ser
octicon <icon name>. Por ejemplo:octicon smiley.
- Un archivo SVG que se almacena en el directorio
-
`categories` - **Opcional.** Define las categorías en las que se muestra el flujo de trabajo. Puede usar nombres de categoría de las listas siguientes:- Nombres de categoría generales del repositorio starter-workflows.
- Idiomas lingüistas de la lista del repositorio linguist.
- Pilas técnicas admitidas en la lista en el repositorio starter-workflows.
-
`filePatterns` - **Opcional.** Permite usar el flujo de trabajo si el repositorio del usuario tiene un archivo en su directorio raíz que coincide con una expresión regular definida.