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.
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 Enterprise Server. 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 configurar un nombre para el job, lo cuál se muestra en la IU 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. Si una ejecución contiene una serie de jobs que se necesitan el uno al otro, una falla aplica a todos los jobs en la cadena de dependencias desde el punto de falla en adelante.
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".