Skip to main content

Utilizar jobs en un flujo de trabajo

Utilizar flujos de trabajo para ejecutar varios jobs.

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. Consulte «Límites de uso, facturación y administración» para información sobre los límites de uso de los ejecutores hospedados en GitHub y «Acerca de los ejecutores autohospedados» para información sobre los límites de uso de los ejecutores autohospedados.

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, vea «Terminales de REST para la API de Acciones de GitHub».

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 se omite un trabajo o este presenta un error, se omitirán todos los trabajos, a menos que utilicen una expresión condicional que haga que el trabajo continúe. Si una ejecución contiene una serie de trabajos que se necesitan entre sí, se produce un error en todos los trabajos de la cadena de dependencias o se omiten desde el punto de error en adelante. Si deseas que un trabajo se ejecute incluso si el trabajo del que depende no se realizó correctamente, usa la expresión condicional always() en jobs.<job_id>.if.

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:

  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 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 obtener más información, vea «Evaluación de expresiones en flujos de trabajo y acciones».