Atualmente, geramos muitos trabalhos em Jenkins em umpor base ramo Git usando o trabalho Jenkins DSL; o plugin multi-branch pipeline parece uma maneira interessante de obter suporte de geração de empregos de primeira classe usando Jenkinsfiles e reduzir a quantidade de Job DSL que mantemos.
Por exemplo nós temos libwidget-server e widget-servidor desenvolver projetos de filiais. Quando a construção libwidget-server termina, o job servidor de widget é acionado (para o ramo de desenvolvimento). Isso se aplica a outros ramos também.
Isso faz uso do Build after other projects are built
para acionar após a conclusão de uma compilação upstream (por exemplo, libwidget-server faz com que o widget-server seja construído).
Parece que o plugin de pipeline multi-filial não tem o Build after other projects are built
configuração - como poderíamos realizar o acima na construção de pipeline multi-filial?
Respostas:
10 para resposta № 1Você deve adicionar o nome da ramificação ao seu job upstream (supondo que você esteja usando um pipeline multi-branch para o job upstream também).
Suponha que você tenha uma pasta com duas tarefas, ambas as tarefas de pipeline multi-filial: jobA
e jobB
; jobB
deve acionar depois jobA
"s master
.
Você pode adicionar este snippet de código a jobB
"s Jenkinsfile:
properties([
pipelineTriggers([
upstream(
threshold: "SUCCESS",
upstreamProjects: "../jobA/master"
)
])
])
(Lembre-se que qualquer ramo de jobB
aqui vai disparar depois jobA
"s mestre!)
3 para resposta № 2
Atualmente, estou tentando fazer com que isso funcione para a nossa implantação. O mais próximo que eu tenho é adicionar o seguinte ao Jenkinsfile a jusante;
properties([
pipelineTriggers([
triggers: [
[
$class: "jenkins.triggers.ReverseBuildTrigger",
upstreamProjects: "some_project", result: hudson.model.Result.SUCCESS
]
]
]),
])
Isso, pelo menos, faz com que Jenkins reconheça que deveria estar desencadeando quando "some_project" é construído, por exemplo, aparece na página "Visualizar configuração".
No entanto, até agora, as builds de "some_project" ainda não acionam o downstream projeto como esperado.
Dito isto, talvez você tenha mais sorte. Deixe-me saber se funciona para você.
(Alguém fez uma pergunta semelhante aqui -> Jenkins: Trigger Pipeline multi-filial na mudança upstream )