Tenho vários trabalhos trabalhando com um único recurso externo (servidor). O primeiro trabalho implementa o aplicativo no ambiente, depois executa os testes nesse ambiente e o terceiro executa os testes de integração nesse ambiente.
Eu sei que existe a opção de grupo de recursos . Mas ele bloqueia apenas trabalhos. Se dois oleodutos executados simultaneamente eu preciso para executar job1
, job2
, job3
a partir do primeiro gasoduto e somente quando o primeiro recurso liberação gasoduto - o segundo gasoduto pode lançar jobs1-3
. Existe uma maneira de conseguir isso? Existem outros trabalhos em andamento - eles devem funcionar simultaneamente.
Eu acho que ele pode ser implementado através dos
needs
eresource_group
palavras-chave e a API gitlab.Todo trabalho recebe o ID do pipeline ao qual pertence como a
predefined-variable
. Se você usar a API do gitlab, poderá ver o status de outros trabalhos no pipeline. Se você pode usar esse statusneeds
e asresource_group
palavras - chave, acho que pode alcançar o que pretendia. Veja a descrição do código abaixo e seus comentários para mais detalhes.(Eu não testei, então esse método precisa de uma revisão.)
Referenecs:
fonte
traffic_light
trabalho, devo esperar o término da execução do trabalho1-3 no pipeline simultâneo. O que eu não gosto nessa abordagem - seus minutos de ci serão desperdiçados na verificação do status do pipeline simultâneo.traffic_light
usar atags
palavra-chave. Atualmente, muitos fornecedores de nuvem fornecem instâncias de camada gratuitas, suficientes para executar tarefas de espera simples comotraffic_light
.