How to differentiate build triggers in Jenkins Pipeline

后端 未结 7 1656
挽巷
挽巷 2020-12-03 10:23

I\'m hoping to add a conditional stage to my Jenkinsfile that runs depending on how the build was triggered. Currently we are set up such that builds are either triggered by

7条回答
  •  孤街浪徒
    2020-12-03 10:58

    The ability to get causes for a workflow run was released in version 2.22 (2018 Nov 02) to the Pipeline Supporting APIs Plugin. The feature was requested in JENKINS-41272.

    A couple methods were added to the currentBuild global variable with that release:

    getBuildCauses

    • Returns a JSON array of build causes for the current build

    EXPERIMENTAL - MAY CHANGE getBuildCauses(String causeClass)

    • Takes a string representing the fully qualified Cause class and returns a JSON array of build causes filtered by that type for the current build, or an empty JSON array if no causes of the specified type apply to the current build

    And an example from me submitting:

    echo "${currentBuild.buildCauses}" // same as currentBuild.getBuildCauses()
    echo "${currentBuild.getBuildCauses('hudson.model.Cause$UserCause')}"
    echo "${currentBuild.getBuildCauses('hudson.triggers.TimerTrigger$TimerTriggerCause')}"
    

    And the output:

    [Pipeline] echo
    [[_class:hudson.model.Cause$UserIdCause, shortDescription:Started by user anonymous, userId:null, userName:anonymous], [_class:org.jenkinsci.plugins.workflow.cps.replay.ReplayCause, shortDescription:Replayed #12]]
    [Pipeline] echo
    []
    [Pipeline] echo
    []
    [Pipeline] End of Pipeline
    Finished: SUCCESS
    

    NOTE

    There appears to be an issue with the currentBuild.getBuildCauses(type) when the type is a type of Cause contributed by a plugin. For example, currentBuild.getBuildCauses('org.jenkinsci.plugins.workflow.cps.replay.ReplayCause') fails with a java.lang.ClassNotFoundException. This was reported in JENKINS-54673 for the 2.22 version of the Pipeline: Supporting APIs (workflow-support) plugin. It is reportedly fixed in the 2.24 version.

提交回复
热议问题