Abaixo está o requisito necessário para alcançar o uso do Jenkins Pipeline e eu sou uma nova abelha no Jenkins Pipeline.
- Após concluir o trabalho de desenvolvimento e enviar suas alterações ao Bitbucket, o usuário cria uma solicitação de recebimento.
- Para aprovar uma solicitação de recebimento, precisamos de pelo menos uma compilação Jenkins bem-sucedida. Assim, gostaríamos de obter apenas o resultado da compilação do código verificado para a solicitação de recebimento.
- Quando uma solicitação de recebimento é criada / atualizada, o Jenkins deve ser acionado automaticamente para uma integração contínua real.
- O resultado da compilação deve ser reportado ao Bitbucket.
Utilizou o Stash Pull Request Builder e o stash Notifier para o processo acima, que está funcionando no Normal Freestyle Project.
Precisamos migrar a funcionalidade semelhante usando o pipeline Jenkins. Portanto, criamos o trabalho de jenkins como abaixo.
O script de pipeline para verificar a ramificação do PR e a criação do gatilho é como abaixo
node {
stage('Checkout') {
checkout(
[
$class: 'GitSCM',
extensions: [
[$class: 'CleanCheckout'],
],
branches: [
[name: '']
],
userRemoteConfigs:
[[
credentialsId: 'id',
url: 'repourl.git'
refspec: ('+refs/pull-requests/*/from:refs/remotes/origin/pr/*/from'),
branch: ('origin/pr/${pullRequestId}/from')
]]
])
}
stage('Build') {
sh 'make'
}
stage('notify') {
step([$class: 'StashNotifier'])
try {
// Do stuff
currentBuild.result = 'SUCCESS'
} catch(err) {
currentBuild.result = 'FAILED'
}
step([$class: 'StashNotifier'])
}
}
Embora eu tenha feito a configuração acima ao criar / atualizar o PR, a compilação não é acionada automaticamente no jenkins. Eu acho que a notificação do stash para o jenkins não aconteceu porque especificamos "origin/${pullRequestId}/from"
no projeto de estilo livre. Mas não tenho essa opção para especificar no trabalho de pipeline.
Tentei algumas alternativas como abaixo.
Em vez do stash Pull Request Builder, tentei apenas o projeto "Poll SCM" e especifiquei o trabalho cron para disparar como "H/2 * * * *"
. Após a confirmação, o trabalho é acionado em jenkins. Isso significa que, para cada commit, o trabalho de jenkins é acionado. Mas Jenkins deve acionar o trabalho quando o PR for criado / atualizado.
Estou sentindo falta de algo aqui certamente que poderia ser básico e novo no pipeline de jenkins.
Alguma dica para alcançar o comportamento desejado?