Skip to main content
Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.
GitHub AE está actualmente en un lanzamiento limitado. Por favor, contacta a nuestro equipo de ventas para conocer más sobre esto.

Utilizar la concurrencia

Ejecutar un solo job a la vez.

Resumen

Nota: Cuando se especifica la concurrencia a nivel del job, no se garantiza el orden para los jobs o ejecuciones que se ponen en fila a 5 minutos uno del otro.

Puedes utilizar jobs.<job_id>.concurrency para asegurarte de que un solo job o flujo de trabajo que utilice el mismo grupo de concurrencia sea el que se ejecute a la vez. Un grupo de concurrencia puede ser cualquier secuencia o expresión. La expresión puede utilizar cualquier contexto, con excepción del contexto secrets. Para obtener más información sobre las expresiones, consulta la sección "Expresiones".

También puedes especificar la concurrency a nivel del flujo de trabajo. Para obtener más información, consulta la concurrency.

Cuando un job o flujo de trabajo concurrente se pone en cola, si otro job o workflow que utilicen el mismo grupo de concurrencia en el repositorio se encuentra en progreso, el job o flujo de trabajo en cola se mostrará como pending. Cualquier job o flujo de trabajo pendientes anteriores en el grupo de concurrencia se cancelarán. Para también cancelar cualquier job ejecutándose concurrentemente en el mismo grupo de concurrencia, especifica cancel-in-progress: true.

Ejemplos: Utilizando la concurrencia y el comportamiento predeterminado

concurrency: staging_environment
concurrency: ci-${{ github.ref }}

Ejemplo: Utilizar la concurrencia para cancelar cualquier job o ejecución en curso

concurrency: 
  group: ${{ github.ref }}
  cancel-in-progress: true

Ejemplo: Utilizar un valor para segunda opción

Si compilas el nombre de grupo con una propiedad que solo se defina para eventos específicos, puedes utilizar un valor de segunda opción. Por ejemplo, github.head_ref solo se define en los eventos de pull_request. Si tu flujo de trabajo responde a otros eventos adicionalmente a los de pull_request, necesitarás proporcionar una segunda opción para evitar un error de sintaxis. El siguiente grupo de concurrencia cancela los jobs o ejecuciones en curso únicamente en los eventos de pull_request; si github.head_ref no se define, el grupo de concurrencia se revertirá a la ID de ejecución, la cual garantiza ser única y definida para la ejecución.

concurrency: 
  group: ${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

Ejemplo: Cancelar únicamente los jobs o ejecuciones en curso para el flujo de trabajo actual

Si tienes flujos de trabajo múltiples en el mismo repositorio, los nombres del grupo de concurrencia deben ser únicos en todos los flujos de trabajo para evitar que se cancelen jobs o ejecuciones en curso desde otros flujos de trabajo. De otra forma, cualquier job pendiente o previamente en curso se cancelará sin importar el flujo de trabajo.

Para solo cancelar las ejecuciones en curso para el mismo flujo de trabajo, puedes utilizar la propiedad github.workflow para crear el grupo de concurrencia:

concurrency: 
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true