如何检查是什么触发了詹金斯工作?

时间:2018-07-05 21:32:03

标签: jenkins jenkins-pipeline

我正在尝试将一项工作参数化,但是我想检查触发当前工作的上一步。如何检查?

2 个答案:

答案 0 :(得分:2)

在管道脚本中,您可以执行以下操作:

@NonCPS
def getAllCauses() {
  currentBuild.rawBuild.getCauses().toString()
}

stage('print causes') {
  echo getAllCauses()
}

这将打印出如下内容:

[hudson.model.Cause$UserIdCause@a05b0080]

如果您想获取更多详细信息,则必须将其从hudson.model.Cause实例中删除。例如,下面的代码片段返回对构建“负责”的用户列表,如果用户对构建做出了贡献或导致构建(例如,通过登录Web UI),则该用户被视为“负责”然后点击“立即构建”按钮):

@NonCPS
def getResponsibleUsers() {
  def build = currentBuild.rawBuild
  def users = build.getCauses().collect() { cause->
    def causeType = cause.getClass()
    if (causeType == jenkins.branch.BranchIndexingCause) {
      return build.changeSets.collect() { set->
        set.collect { entry->
          entry.getAuthor()
        }
      }
    } else if (causeType == hudson.model.Cause$UserIdCause) {
      return User.get(cause.getUserName())
    } else { 
      return []
    }      
  }

  return users.flatten().unique()
}

stage('print responsible users') {
  echo getResponsibleUsers()
}

答案 1 :(得分:1)

与jayhendren的答案类似,但我们使用do则简单一些:

library(igraph)
AM = matrix(c(0,1,0,1,0,1,1,0,0,1,0,1,0,0,1,0), ncol=4)

G1 = graph_from_adjacency_matrix(AM)

par(mfrow=c(1,2))
plot(G1, vertex.size=20, main="Original")

## This will change the node names
V(G1)$label = LETTERS[1:4]
plot(G1, vertex.size=20, main="With Labels")

这将返回:AM = matrix(c(0,1,0,1,0,1,1,0,0,1,0,1,0,0,1,0), ncol=4) colnames(AM) = LETTERS[1:4] rownames(AM) = LETTERS[1:4] G2 = graph_from_adjacency_matrix(AM) plot(G2, vertex.size=20) 例如,如果它是cron调度程序触发器。

从那里您只需要知道是什么原因导致您寻找或不寻找并搜索列表。