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}"'
                    }
      }