Skip to main content

Utilizar jobs en un flujo de trabajo

Utilizar flujos de trabajo para ejecutar varios jobs.

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:

  1. job1
  2. job2
  3. 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".