现在我已经配置了jenkins gitlab连接和gitlab webhook来触发jenkins工作。
我想创建Jenkinsfile,其中某些任务仅在构建由push触发时执行,而其他任务仅在构建由merge请求触发时执行。我使用管道工作。这可能吗?
BUILD_CAUSE变量什么都没有显示。
感谢。
答案 0 :(得分:1)
我不认为这是可能的。你最好的办法是写两个单独的工作。 1在推送事件上触发,而其他触发事件仅在合并请求时触发。您可以做的另一件事是编写一个单独的webhook,它根据推送/合并事件发送不同的参数,并使用条件BuildStep插件配置您的jenkins作业。
答案 1 :(得分:1)
如果你正在使用gitlab jenkins插件,你可以检查是否设置了env变量gitlabMergeRequestId。
答案 2 :(得分:0)
看看Jenkins Builtin Functions。
您可能正在寻找changeRequest
:
如果当前构建用于“更改请求”(在GitHub和Bitbucket上也称为Pull Request>,在GitLab上进行Merge Request或Gerrit更改等),则执行阶段。当没有 传递参数时,阶段将在每个更改请求上运行,例如:当{ changeRequest()}。
答案 3 :(得分:0)
如果您位于when
块中,则可以按照here
changeRequest
变量
如果您位于script
块中或管道的任何其他部分中,则可以在第一阶段创建这样的变量,并在各处使用它
def isPullRequest = false
pipeline {
agent {
// ....
}
stages {
stage('First stage') {
steps {
script {
isPullRequest = env.CHANGE_ID != null
}
}
}
// other stages...
}
}