Resumen
Una ejecución de flujo de trabajo se conforma de uno o más jobs
, los cuales se ejecutan en paralelo predeterminadamente. Para ejecutar trabajos de manera secuencial, puedes definir dependencias en otros trabajos utilizando la palabra clave jobs.<job_id>.needs
.
Cada job se ejecuta en un ambiente ejecutor que especifica 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 obtener más información, consulta las secciones "Límites de uso y facturación" para los ejecutores hospedados en GitHub y "Acerca de los ejecutores auto hospedados" para los límites de uso de los ejecutores auto-hospedados.
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. Para obtener más información, consulta la sección "Jobs de los Flujos de Trabajo".
Configurar una ID para un job
Utiliza jobs.<job_id>
para darle a tu job un identificador único. 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>
con una cadena que sea exclusiva del objeto jobs
. El <job_id>
debe comenzar con una letra o _
y debe contener solo caracteres alfanuméricos, -
, o _
.
Ejemplo: Crear jobs
En este ejemplo, se crearon dos jobs y sus valores de 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
Utiliza jobs.<job_id>.name
para un nombre del job, el cual se muestra en GitHub.
Definir los jobs de prerrequisito
Utiliza jobs.<job_id>.needs
para identificar cualquier job que deba completarse con éxito antes de que este se ejecute. 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.
Ejemplo: Requerir jobs dependientes exitosos
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
En este ejemplo, job1
debe completarse con éxito antes de que job2
comience, y job3
espera a quejob1
y job2
se completen.
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
utiliza la expresión condicional always()
para que siempre se ejecute después de que el job1
y el job2
se hayan completado, sin importar si tuvieron éxito o no. Para obtener más información, consulta la sección "Expresiones".