Como posso desencadear a construção de outro trabalho de dentro do Jenkinsfile
?
Suponho que esse trabalho seja outro repositório da mesma organização do github , que já tenha seu próprio arquivo Jenkins.
Eu também quero fazer isso apenas se o nome da ramificação for mestre, pois não faz sentido disparar construções a jusante de ramificações locais.
Atualizar:
stage 'test-downstream'
node {
def job = build job: 'some-downtream-job-name'
}
Ainda assim, quando executado, recebo um erro
Nenhum trabalho parametrizado chamado some-downtream-job-name foi encontrado
Estou certo de que esse trabalho existe no jenkins e está na mesma pasta da organização que a atual. É outro trabalho que tem seu próprio Jenkinsfile
.
Observe que esta pergunta é específica ao plug - in da organização do GitHub, que cria e mantém automaticamente trabalhos para cada repositório e ramificação da sua organização do GitHub.
build job: '../other-repo/master', wait: false
build job: '../other-repo/$BRANCH_NAME'
onde$BRANCH_NAME
está a variável de ambiente Jenkins referente ao ramo que está executando o projeto Multibranch?${BRANCH_NAME}
estiver disponível como uma variável de ambiente, a substituição simples de cadeias funcionará. Apenas certifique-se de alternar para"
from'
para citar sua string. por exemplo,build job: "../other-repo/${BRANCH_NAME}"
build job
: jenkins.io/doc/pipeline/steps/pipeline-build-stepAlém das respostas mencionadas acima: eu queria iniciar um trabalho com um parâmetro simples passado para um segundo pipeline e encontrei a resposta em https://dzone.com/refcardz/continuous-delivery-with-jenkins-workflow .
Então eu usei:
fonte
build
comando foi retornado? Como acessar o BUILD_NUMBER em um dos seguintes estágios? Alguém sabe onde esse comando está documentado?build job: 'freestyle', parameters: [ string(name: 'param1', value:'test_param'), string(name:'dummy', value: "${index}")]
dia, de jenkins.io/doc/pipeline/examples/#jobs-in-parallelbuild job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
, não funcionou para mim, mas:build job: 'RunArtInTest', parameters: [string(name: 'systemname', value: "${VALUE}")]
trabalhouO comando
build
no pipeline existe para acionar outros trabalhos no jenkins.Exemplo no github
O trabalho deve existir em Jenkins e pode ser parametrizado. Quanto ao ramo, acho que você pode lê-lo no git
fonte
build job: 'jobname
mas recebo esse erroNo parameterized job named jobname found
e posso garantir que existe um trabalho com esse nome no mesmo nível na pasta da organização.build job: "${ORGANISATION_NAME}/${REPO_NAME}/master"
/
. Caminhos relativos são bons; o problema de sorin provavelmente era que o chamado do trabalhobuild
era um trabalho de váriasjobname
filiais , o que significa que um caminho tentaria criar o ramojobname
do mesmo trabalho; ele precisa ser em../jobname/branchname
vez dissoVocê pode usar a
build job
etapa do Jenkins Pipeline (requisito mínimo de Jenkins: 2.130).Aqui está a API completa da
build
etapa: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/Como usar
build
:job
: Nome de um trabalho a jusante a ser construído. Pode ser outro trabalho do Pipeline, mas mais comumente é um estilo livre ou outro projeto.../sister-folder/downstream
/top-level-folder/nested-folder/downstream
Acionar outro trabalho usando uma ramificação como um parâmetro
Na minha empresa, muitas de nossas filiais incluem "/". Você deve substituir quaisquer instâncias de "/" por "% 2F" (como aparece no URL do trabalho).
Neste exemplo, estamos usando caminhos relativos
Acionar outro trabalho usando o número da compilação como um parâmetro
Acionar muitos trabalhos em paralelo
Fonte: https://jenkins.io/blog/2017/01/19/converting-conditional-to-pipeline/
Mais informações sobre o Parallel aqui: https://jenkins.io/doc/book/pipeline/syntax/#parallel
Ou alternativamente:
fonte
Use o plug-in de trabalho de construção para essa tarefa para acionar outros trabalhos do arquivo jenkins. Você pode adicionar uma variedade de lógica à sua execução, como opções e etapas paralelas, de nó e agentes e para acionar tarefas externas. Dei um exemplo de livro de receitas fácil de ler para isso.
1.exemplo para acionar trabalhos externos a partir do arquivo jenkins com exemplo condicional:
2.exemplo acionando vários trabalhos do arquivo jenkins com exemplo de condicionais:
fonte