6

有没有办法可以在执行期间识别当前构建的触发器。我想要确定触发器是 SCM 更改、cron 触发器还是用户触发器。我为一个作业定义了多个触发器,并希望在 shell 执行脚本中使用触发器类型作为参数。

4

4 回答 4

2

您可以使用 Rest API 获取此信息;这是一个例子:

http://jenkins.yourdomain.com/job/job_name/build_number/api/json?tree=actions[causes[shortDescription]]&pretty=true

返回

{
  "actions" : [
    {
      "causes" : [
        {
          "shortDescription" : "Started by an SCM change"
        }
      ]
    },
    {

    },
    {

    },
    {

    },
    {

    },
    {

    },
    {

    }
  ]
}
于 2013-10-01T17:49:56.077 回答
1

一种解决方案是使用运行条件插件,它可以根据触发器类型运行不同的 shell 脚本。它不是完美的解决方案,但它会做你想做的事。

于 2014-06-30T14:25:17.777 回答
0

在 http(s)://(your-jenkins-server)/jenkins/job/(job-name)/(job-number) 的“构建工件”和“更改”部分(如果有的话)下,你应该看到这个图标:带齿轮的橙色钻石。它旁边的文本应说明导致构建的原因。

于 2019-09-14T01:59:24.570 回答
0

您也可以使用 groovy 脚本来完成。查看我对Jenkins Groovy 的回答:是什么触发了构建 ,您可以获得 Cause 对象,然后检查它是哪个子类型的原因 http://javadoc.jenkins-ci.org/hudson/model/Cause.html

于 2015-11-25T12:34:07.007 回答