Tengo varios trabajos trabajando con un solo recurso externo (servidor). El primer trabajo implementa la aplicación en el entorno, el segundo ejecuta las pruebas en este entorno, el tercero ejecuta las pruebas de integración en este entorno.
Sé que hay una opción de grupo de recursos . Pero solo bloquea trabajos. Si dos tuberías coincide en el tiempo que necesito para ejecutar job1
, job2
, job3
de la primera tubería y sólo cuando el primer recurso liberación de tuberías - la segunda tubería puede lanzar jobs1-3
. ¿Hay una manera de lograr esto? Hay otros trabajos en tramitación: deberían funcionar al mismo tiempo.
Creo que se puede implementar a través de los
needs
y lasresource_group
palabras clave y la API gitlab.Cada trabajo recibe la identificación de la tubería a la que pertenece como a
predefined-variable
. Si usa la API de gitlab, puede ver el estado de otros trabajos en la tubería. Si puede usar este estadoneeds
y lasresource_group
palabras clave, creo que puede lograr lo que pretendía. Consulte la descripción del código a continuación y sus comentarios para obtener más detalles.(No lo probé yo mismo, por lo que este método necesita una revisión).
Referenecs:
fuente
traffic_light
trabajo, debería esperar a que finalice la ejecución del trabajo1-3 en la tubería concurrente. Lo que no me gusta de este enfoque: sus minutos de ci se perderán al verificar el estado de la canalización concurrente.traffic_light
usar latags
palabra clave. Muchos proveedores de la nube de hoy ofrecen instancias de niveles gratuitas, que son suficientes para ejecutar tareas de espera simples comotraffic_light
.