Как проверить, что вызвало работу Дженкинса? - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь сделать работу параметризованной, но я хотел бы проверить предыдущий шаг, который вызвал текущую работу. Как это проверить?

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Аналогично ответу Джейхендрена, но немного проще, мы используем do:

/**
* Retrieves list of causes that generated job execution
*
* @return list
*/
List getCauses() {

    return currentBuild.rawBuild.getCauses().collect { it.getClass().getCanonicalName().tokenize('.').last() }

}

Возвращает: ['TimerTriggerCause'] Если это, например, триггер планировщика cron.

Оттуда вам просто нужно знать, что вызывает ваш поиск или не искать, и искать в списке.

0 голосов
/ 06 июля 2018

Из сценария конвейера вы можете сделать что-то вроде этого:

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

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

Это распечатает что-то вроде этого:

[hudson.model.Cause$UserIdCause@a05b0080]

Если вам нужна более подробная информация, вам придется вычеркнуть ее из hudson.model.Cause экземпляров. Например, вот фрагмент, который возвращает список пользователей, «ответственных» за сборку, где пользователь считается «ответственным», если он внес коммит в сборку или вызвал сборку (т. Е. Путем входа в веб-интерфейс пользователя). и нажав кнопку «Build Now»):

@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()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...