how to get $CAUSE in workflow

后端 未结 9 1721
暗喜
暗喜 2020-12-10 01:24

Jenkins has a $CAUSE variable available to freestyle build jobs.

How can I access this or something similar in workflow?

My team makes use of it in email out

9条回答
  •  伪装坚强ぢ
    2020-12-10 02:16

    $BUILD_CAUSE env is not available for pipelines, and in multibranch pipeline even currentBuild.rawBuild.getCause(hudson.model.Cause$UserIdCause) would fail, if build was triggered by SCM change or timer. So, I implemented below workaround..

        def manualTrigger = false
        node('master'){
           def causes = currentBuild.rawBuild.getCauses()
           for(cause in causes) {
              if(cause.properties.shortDescription =~ 'Started by user') {
                 manualTrigger = true
                 break
              }
          }
      }
    

    And rest of my workflow is in another node

       node('nodefarm') {
           if(manualTrigger) {
             // do build stuff here
           } else {
             //build not triggered by user.
           }
       } 
    

提交回复
热议问题