Получить учетные данные jenkins job builder в groovy

Я пытаюсь извлечь имя пользователя и пароль в скрипте jenkins groovy, который инициировал сборку. Эти данные нужны мне, чтобы оставлять комментарии к jira от моего имени. Так, например, я вхожу в систему jenkins и начинаю работу, тогда мои учетные данные должны использоваться для публикации комментария в jira .. Я пробовал много сообщений, но не нашел ничего, связанного с моими требованиями. Любая помощь будет оценена по достоинству.

Почему бы вам не создать отдельного пользователя для Jenkins, которого можно было бы использовать для выполнения действий в Jira? Это обычная практика. Попытка получить учетные данные от пользователя в Jenkins должна быть невозможной, поскольку это будет серьезным недостатком безопасности.

Krzysztof Błażełek 26.10.2018 09:18
0
1
446
1

Ответы 1

после нескольких секунд поиска в Google я нашел этот скрипт официально опубликован Cloudbees.

Итак, так:

Jenkins.instance.getAllItems(Job).each{

  def jobBuilds=it.getBuilds()

    //for each of such jobs we can get all the builds (or you can limit the number at your convenience)
    jobBuilds.each { build ->
      def runningSince = groovy.time.TimeCategory.minus( new Date(), build.getTime() )
      def currentStatus = build.buildStatusSummary.message
      def cause = build.getCauses()[0] //we keep the first cause
      //This is a simple case where we want to get information on the cause if the build was 
      //triggered by an user
      def user = cause instanceof Cause.UserIdCause? cause.getUserId():""
      //This is an easy way to show the information on screen but can be changed at convenience
      println "Build: ${build} | Since: ${runningSince} | Status: ${currentStatus} | Cause: ${cause} | User: ${user}" 

      // You can get all the information available for build parameters.
      def parameters = build.getAction(ParametersAction)?.parameters
      parameters.each {
        println "Type: ${it.class} Name: ${it.name}, Value: ${it.dump()}" 

        }
    }
}

Вы получите идентификатор пользователя, который запускает задание, и вы наверняка не сможете получить его учетные данные, по крайней мере, в виде обычного текста.

Небольшое объяснение

//to get all jobs
Jenkins.instance.getAllItems(Job)
{...}
//get builds per job
def jobBuilds=it.getBuilds()
//get build cause
def cause = build.getCauses()[0] //we keep the first cause
//if triggered by an user get id, otherwise empty string
def user = cause instanceof Cause.UserIdCause? cause.getUserId():""

Другие вопросы по теме