Nota: Actualmente los ejecutores hospedados en GitHub no se admiten en GitHub Enterprise Server. Puede ver más información sobre la compatibilidad futura planeada en GitHub public roadmap.
Información general
Nota: Cuando se especifica la simultaneidad a nivel de trabajo, no se garantiza el orden para los trabajos ni las ejecuciones que se ponen en cola con una diferencia de 5� minutos entre sí
Use jobs.<job_id>.concurrency
para asegurarse de que solo se ejecute al mismo tiempo un trabajo o flujo de trabajo que use el mismo grupo de concurrencia. Un grupo de concurrencia puede ser cualquier secuencia o expresión. La expresión puede usar cualquier contexto excepto secrets
. Para más información sobre las expresiones, vea "Expresiones".
También puede especificar concurrency
en el nivel de flujo de trabajo. Para más información, vea concurrency
.
Cuando un trabajo o flujo de trabajo concurrente se pone en cola, si otro trabajo o flujo de trabajo que utilicen el mismo grupo de simultaneidad en el repositorio se encuentra en curso, el trabajo 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 cancelar también cualquier trabajo o flujo de trabajo actualmente en ejecución en el mismo grupo de simultaneidad, 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 eventos pull_request
. Si tu flujo de trabajo responde a otros eventos además de los eventos pull_request
, necesitarás proporcionar una segunda opción para evitar un error de sintaxis. El siguiente grupo de simultaneidad cancela los trabajos en curso o solo se ejecuta en eventos pull_request
; si github.head_ref
no está definido, el grupo de simultaneidad revertirá al identificador de ejecución, que se garantiza que es único y definido 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 cancelar solo las ejecuciones en curso del mismo flujo de trabajo, puedes usar la propiedad github.workflow
para compilar el grupo de simultaneidad:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true