以下是使用Jenkins Pipeline实现所需的要求,我是Jenkins Pipeline的新宠。
完成开发工作并将其更改推送到 Bitbucket用户创建拉取请求。
为了批准拉取请求,我们至少需要一次成功 詹金斯建造。因此,我们只想获得构建结果 为拉取请求签入的代码。
当创建/更新拉取请求时,将触发Jenkins 自动进行实时持续集成。
构建结果应报告给Bitbucket。
使用Stash Pull Request Builder和stash Notifier进行上述过程,适用于普通自由式项目。
我们需要使用Jenkins管道迁移类似的功能,所以创建了jenkins作业,如下所示。 检查PR分支和触发构建的管道脚本如下所示
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'])
}
}
虽然我在创建/更新PR时已经完成了上述配置,但是在jenkins中不会自动触发构建。我想从stash到jenkins的通知没有发生,因为我们在自由样式项目中指定"origin/${pullRequestId}/from"
。但我没有在管道工作中指定的选项。
尝试了以下几种替代方案。
而不是藏匿拉请求构建器,我只使用"民意调查SCM"项目和指定的cron作业触发为"H/2 * * * *
"。提交后,工作将由詹金斯触发。这意味着每次提交都会触发jenkins作业。但是 Jenkins应该在创建/更新PR时触发工作。
同样基于以下question,一个答案说"在自由式作业中添加触发器以启动管道作业作为构建步骤"我没找到。
我肯定在这里遗漏了一些可能是jenkins管道基本和新的东西。
有关实现理想行为的任何暗示吗?