Jenkins Pipeline和stash Pull Request Builder无法处理PR创建/更新

时间:2017-07-11 15:15:23

标签: git jenkins bitbucket jenkins-plugins jenkins-pipeline

以下是使用Jenkins Pipeline实现所需的要求,我是Jenkins Pipeline的新宠。

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

  • 为了批准拉取请求,我们至少需要一次成功 詹金斯建造。因此,我们只想获得构建结果 为拉取请求签入的代码。

  • 当创建/更新拉取请求时,将触发Jenkins 自动进行实时持续集成。

  • 构建结果应报告给Bitbucket。

使用Stash Pull Request Builder和stash Notifier进行上述过程,适用于普通自由式项目。

我们需要使用Jenkins管道迁移类似的功能,所以创建了jenkins作业,如下所示。 enter image description here 检查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管道基本和新的东西。

有关实现理想行为的任何暗示吗?

0 个答案:

没有答案