Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Jenkins管道和隐藏请求生成器不处理PR创建/更新_Git_Jenkins_Bitbucket_Jenkins Plugins_Jenkins Pipeline - Fatal编程技术网

Git Jenkins管道和隐藏请求生成器不处理PR创建/更新

Git Jenkins管道和隐藏请求生成器不处理PR创建/更新,git,jenkins,bitbucket,jenkins-plugins,jenkins-pipeline,Git,Jenkins,Bitbucket,Jenkins Plugins,Jenkins Pipeline,下面是使用Jenkins管道需要达到的要求,我是Jenkins管道的新手 完成开发工作并将其更改推至 用户创建拉取请求的Bitbucket 为了批准拉取请求,我们需要至少一个成功的拉取请求 詹金斯建造。因此,我们只希望得到 代码已签入拉取请求 创建/更新拉动请求时,应触发Jenkins 自动进行真正的连续集成 构建结果应报告回Bitbucket 为上述过程使用了隐藏请求生成器和隐藏通知程序,该过程适用于正常的Freestyle项目。 我们需要使用Jenkins管道迁移类似的功能,因此创建了J

下面是使用Jenkins管道需要达到的要求,我是Jenkins管道的新手

  • 完成开发工作并将其更改推至 用户创建拉取请求的Bitbucket

  • 为了批准拉取请求,我们需要至少一个成功的拉取请求 詹金斯建造。因此,我们只希望得到 代码已签入拉取请求

  • 创建/更新拉动请求时,应触发Jenkins 自动进行真正的连续集成

  • 构建结果应报告回Bitbucket

为上述过程使用了隐藏请求生成器和隐藏通知程序,该过程适用于正常的Freestyle项目。

我们需要使用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”
。但我没有那个选项来指定管道内作业

尝试了以下几种选择

我尝试使用“Poll SCM”项目和指定的cron作业来触发,而不是隐藏请求生成器,作为
“H/2****
”。提交后,作业在jenkins触发。这意味着每次提交都会触发jenkins作业。但是詹金斯应该在创建/更新PR时触发作业

同样基于以下内容,一个答案是“在自由式作业中添加一个触发器,作为构建步骤启动管道作业”,我没有找到这个答案

我在这里遗漏了一些对詹金斯管道来说可能是基本的和新的东西


关于实现所需行为的任何提示?

根据查找编辑问题如果您能够将post receive webhook添加到您的存储库/bitbucket,请尝试在bitbucket存储库设置中将:
bitbucket服务器webhook添加到Jenkins
。然后将
Poll SCM设置为“
将阻止jenkins进行轮询,但bitbucket在有新提交等时将触发生成。