代码之家  ›  专栏  ›  技术社区  ›  Smruti Mandal

bitbucketStatusNotify**即使在Jenkins作业完成后,基于bitbucket的构建也不会完成

  •  0
  • Smruti Mandal  · 技术社区  · 6 年前

    我在Bitbucket中配置了webhooks来捕获PR“创建”/“更新”事件,并在Jenkins上执行构建,以提供Bitbucket中的构建状态。

    在Jenkins中成功运行构建后(我得到一个蓝色气泡),它会通知Bitbucket构建状态并收到一个成功的响应。

    Mar 15, 2018 3:55:07 AM org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper sendBuildStatusNotification
    INFO: This request was sent: {
      "state": "SUCCESSFUL",
      "key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
      "url": "http://XX.XX.XX.XX:8080/job/XXXXXX/16/",
      "name": "XXXXXX #XX"
    }
    Mar 15, 2018 3:55:07 AM org.jenkinsci.plugins.bitbucket.BitbucketBuildStatusHelper sendBuildStatusNotification
    INFO: This response was received: {"key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "description": "", "repository": {"links": {"self": {"href": "https://api.bitbucket.org/2.0/repositories/XXXXXXXXXX/XXXXXXX"}, "html": {"href": "https://bitbucket.org/XXXXXXXXXX/XXXXXXX"}, "avatar": {"href": "https://bitbucket.org/XXXXXXXXXX/XXXXXXX/avatar/32/"}}, "type": "repository", "name": "XXXXXXX", "full_name": "XXXXXXXXXX/XXXXXXX", "uuid": "{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXX}"}, "url": "http://XX.XX.XX.XX:8080/job/XXXXXX/XX/", "links": {"commit": {"href": "https://api.bitbucket.org/2.0/repositories/XXXXXXXXXX/XXXXXXX/commit/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}, "self": {"href": "https://api.bitbucket.org/2.0/repositories/XXXXXXXXXX/XXXXXXX/commit/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/statuses/build/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}}, "refname": null, "state": "SUCCESSFUL", "created_on": "2018-03-15T03:55:07.857369+00:00", "commit": {"hash": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", "type": "commit", "links": {"self": {"href": "https://api.bitbucket.org/2.0/repositories/XXXXXXXXXX/XXXXXXX/commit/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}, "html": {"href": "https://bitbucket.org/XXXXXXXXXX/XXXXXXX/commits/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}}}, "updated_on": "2018-03-15T03:55:07.857429+00:00", "type": "build", "name": "XXXXXXX #XX"}
    Mar 15, 2018 3:55:08 AM org.jenkinsci.plugins.workflow.job.WorkflowRun finish
    INFO: PR-LGM #16 completed: SUCCESS
    

    问题是,我在bitbucket上看到了两个构建,一个是成功的,带有绿色刻度,另一个永远是挂起的(蓝色时钟)。

    enter image description here

    PR的后续更新会不断增加成功的构建,但有一个构建会永远保持运行状态。

    在詹金斯号上,我发现了这个错误。

    Mar 15, 2018 3:55:08 AM hudson.model.listeners.RunListener report
    WARNING: RunListener failed
    java.lang.NullPointerException
        at bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.BitbucketRepository.setBuildStatus(BitbucketRepository.java:153)
        at bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.BitbucketBuilds.onCompleted(BitbucketBuilds.java:46)
        at bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.BitbucketBuildListener.onCompleted(BitbucketBuildListener.java:36)
        at hudson.model.listeners.RunListener.fireCompleted(RunListener.java:211)
        at org.jenkinsci.plugins.workflow.job.WorkflowRun.finish(WorkflowRun.java:688)
        at org.jenkinsci.plugins.workflow.job.WorkflowRun.access$1400(WorkflowRun.java:143)
        at org.jenkinsci.plugins.workflow.job.WorkflowRun$GraphL.onNewHead(WorkflowRun.java:1006)
        at org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.notifyListeners(CpsFlowExecution.java:1368)
        at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$3.run(CpsThreadGroup.java:412)
        at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.run(CpsVmExecutorService.java:35)
        at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
        at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
    

    下面是管道作业的Jenkinsfile定义。

    pipeline {
       environment {
         LINUX_NODE = ""
       }
      agent none
      [...]
      stages {
        stage('Staging Code and Dependencies...') {
          failFast true
          parallel {
            stage('Code Checkout') {
              agent {
                node { label 'linux_slave_machine' }
              }
              [...]
            }
          }
        }
        stage('Running...') {
          failFast true
          parallel {
            stage('Running on Linux') {
              agent {
                node { label 'linux_slave_machine' }
              }
              steps {
                deleteDir()
                script {
                  LINUX_NODE = "${env.NODE_NAME}"
                }
                unstash 'code'
                echo ("Printing for no reason!")
              }
            }
          }
        }
      }
      post {
        success {
          bitbucketStatusNotify(buildState: 'SUCCESSFUL')
          node("${LINUX_NODE}") {
            step([$class: 'WsCleanup'])
          }
        }
        [...]
      }
    }
    
    1 回复  |  直到 4 年前
        1
  •  0
  •   030 Saclyr Barlonium    4 年前

    事实证明,我为测试创建的一些旧作业,即使在禁用时,也会让Bitbucket等待其构建状态通知。由于他们从未运行过,Bitbucket从未收到他们的状态。