Jenkins Webhook触发了管道作业,但状态不变

时间:2020-07-01 02:10:05

标签: jenkins jenkins-pipeline webhooks

在部署到uat环境后,我有一个要运行e2e测试的管道,该e2e测试在gitlab上运行。我想要做的是让gitlab使用webhook触发jenkins来确定构建是否可以投入生产。这样的点线如下所示。

enter image description here

部署到uat之后,我可以发送Webhook来触发gitlab上的e2e测试。 gitlab可以将webhook发送给jenkins,因为管道作业e2e收到了webhook并建立了成功。它不会更改管道作业状态,因此,除非我们在e2e作业上手动单击触发器,否则我们将无法继续进行生产部署。而且我已经尝试使用currentBuild.currentResultcurrentBuild.result似乎无效。

我该怎么办?

更新

我没有将新的流水线方式与groovy一起使用,而是以这种旧方式进行操作。但是我认为这与我要在此处解决的问题无关。

enter image description here

让我提供有关该问题的更多详细信息。 e2e测试完成后,我将以下请求从gitlab发送到jenkins

curl "SERVER_URL/job/MY_XXX_PROJECT/view/Pipeline/job/X.X%20E2E%20my_e2e_test_result/buildWithParameters?token=xxxxxxxxxxxxxx&PARENT_BUILD_NUMBER=123&currentBuild.currentResult=SUCCESS&currentBuild.Result=SUCCESS"

这是管道,如果我在SERVER_URL/job/MY_XXX_PROJECT/view/Pipeline/job/X.X%20E2E%20my_e2e_test_result/中检查该作业。作业实际上是成功

pipeline status

但是,状态显示为什么都没有发生,如果不再次手动单击同一作业(e2e)上的触发按钮,我们将无法继续进行生产部署。

1 个答案:

答案 0 :(得分:0)

如果您只是在寻找一种更新作业状态的方法,请使用unstableerror步骤。

pipeline {
   agent any

   stages {
      stage('Hello') {
         steps {
            echo 'This job is now a success. All jobs are a success until marked otherwise'.
            //success 'This will fail. There's no such thing as a success step'
            unstable 'This stage is now unstable'
            error 'This job is now failed'
            unstable 'This job is still failed. Build results can only get worse. They can never be improved.'
         }
      }
   }
}

请注意,没有success步骤。可能是因为所有工作都是成功的,除非另有说明。而且,工作的总体结果无法得到。请参阅catchError here的文档。

请注意,构建结果只会变得更糟,因此,如果当前结果不稳定或更糟,则无法将结果更改为SUCCESS。