Git 仅在拉请求上构建,并在Jenkins上传入分支名称
我在詹金斯建立了两个版本:Git 仅在拉请求上构建,并在Jenkins上传入分支名称,git,jenkins,github,pytest,Git,Jenkins,Github,Pytest,我在詹金斯建立了两个版本:buildA和buildB。我的开发人员将提交代码并将代码推送到buildA,我希望在buildB上触发Jenkins上的构建作业,只要buildArepo上发出pull请求 我的buildA文件非常简单: build job: 'buildA', parameters: [gitParameter(name: 'BRANCH', value: env.BRANCH_NAME)] 这只会触发buildB(下面是Jenkins文件片段): 到目前为止,这很有效。然而,我
buildA
和buildB
。我的开发人员将提交代码并将代码推送到buildA
,我希望在buildB
上触发Jenkins上的构建作业,只要buildA
repo上发出pull请求
我的buildA
文件非常简单:
build job: 'buildA', parameters: [gitParameter(name: 'BRANCH', value: env.BRANCH_NAME)]
这只会触发buildB
(下面是Jenkins文件片段):
到目前为止,这很有效。然而,我注意到我的测试需要相当长的时间才能运行,我希望测试只针对拉请求触发。到目前为止,我已经确定了两个选项,我想知道哪一个是更好的做法:
选项1:据我所知,我可以通过使用refspec在下面设置此配置来侦听仅拉请求事件:
选项2:我还听说您可以使用env.CHANGE\u ID
来检查拉取请求事件。因此,我的管道脚本将更改为
script {
if (env.CHANGE_ID) {
sh label: "Install dependencies", script: 'pip install -r requirements.txt'
sh label: 'Execute tests', script: "pytest --custom-parameter ${BRANCH}"'
}
}
我的问题:以下哪个选项更适合获取分支名称,并且只基于Git的pull请求进行构建 第二种选择是要走的路。。。。您有更多的控制权,即您可以根据条件执行某些任务(阶段)。。。在您的情况下:仅在PR上运行测试用例,在推送情况下忽略它们。。。使用简单的if/else2nd选项可以实现这一点。。。。您有更多的控制权,即您可以根据条件执行某些任务(阶段)。。。在您的情况下:仅在PR上运行测试用例,在推送情况下忽略它们。。。这可以通过使用简单的if/else实现
script {
if (env.CHANGE_ID) {
sh label: "Install dependencies", script: 'pip install -r requirements.txt'
sh label: 'Execute tests', script: "pytest --custom-parameter ${BRANCH}"'
}
}