Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
Información general
Una ejecución de flujo de trabajo se compone de uno o varios jobs
, que se ejecutan en paralelo de forma predeterminada. Para ejecutar trabajos de manera secuencial, puede definir dependencias en otros trabajos mediante la palabra clave jobs.<job_id>.needs
.
Cada trabajo se ejecuta en un entorno de ejecutor especificado por runs-on
.
Puedes ejecutar una cantidad ilimitada de trabajos siempre que estés dentro de los límites de uso del flujo de trabajo. Para más información, vea "Límites de uso y facturación" para ejecutores hospedados en GitHub y "Acerca de los ejecutores autohospedados" para los límites de uso del ejecutor autohospedado.
Si necesitas encontrar el identificador único de un job que se ejecuta en una ejecución de flujo de trabajo, puedes utilizar la API de GitHub Enterprise Server. Para más información, vea "Trabajos de flujo de trabajo".
Configurar una ID para un job
Usa jobs.<job_id>
para asignar un identificador único al trabajo. La clave job_id
es una cadena y su valor es un mapa de los datos de configuración del trabajo. Debes reemplazar <job_id>
por una cadena que sea única para el objeto jobs
. <job_id>
debe empezar con una letra o _
, y solo puede contener caracteres alfanuméricos, -
o _
.
Ejemplo: Crear jobs
En este ejemplo, se han creado dos trabajos y sus valores job_id
son my_first_job
y my_second_job
.
jobs:
my_first_job:
name: My first job
my_second_job:
name: My second job
Configurar el nombre de un job
Usa jobs.<job_id>.name
a fin de establecer un nombre para el trabajo, que se muestra en la UI de GitHub.
Definir los jobs de prerrequisito
Use jobs.<job_id>.needs
para identificar los trabajos que se deben completar correctamente antes de que se ejecute este trabajo. Puede ser una cadena o matriz de cadenas. Si un job falla, se saltarán todos los jobs que lo necesiten a menos de que éstos utilicen una expresión condicional que ocasione que el job continúe. Si una ejecución contiene una serie de trabajos que se necesitan entre sí, se aplica un error a todos los trabajos de la cadena de dependencias desde el punto de error en adelante.
Ejemplo: Requerir jobs dependientes exitosos
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
En este ejemplo, job1
se debe completar correctamente antes de que comience job2
y job3
espera a que se completen job1
y job2
.
En este ejemplo, los trabajos se ejecutan de manera secuencial:
job1
job2
job3
Ejemplo: No requerir jobs dependientes exitosos
jobs:
job1:
job2:
needs: job1
job3:
if: ${{ always() }}
needs: [job1, job2]
En este ejemplo, job3
usa la expresión condicional always()
para que siempre se ejecute después de que se hayan completado job1
y job2
, independientemente de si se han realizado correctamente. Para más información, vea "Expresiones".