LINUX.ORG.RU
решено ФорумAdmin

Jenkins: перехват сообщений commit'ов

 ,


0

4

Всем привет!

Есть jenkins, который запускает свои job'ы по commit'у в gitlab. И есть желание видеть в логах после какого commit'а (желательно с сообщением) jenkins выполнил сборку. У кого-то есть подобный опыт и если есть, то как решали такую задачу?



Последнее исправление: gadzira (всего исправлений: 1)

Из интересного: нашел некий Changes Plugin, который умеет так:

def eJob= build job: "job_name", wait: true
if (eJob.changeSets.size() > 0) && eJob.changeSets.items.size() > 0) {
println eJob.changeSets[0].items[0].author.fullName
println eJob.changeSets[0].items[0].msg
}
На самом деле - нет.

gadzira
() автор топика

Короче, вот этот код возвращает подстроку из коммита начинающуюся с # до :. Там, как привило, ожидаются цифры. Например: #12345: Невероятная Задача. Вернется - 12345. Если коммитов несколько, то вернется их список: 12345, 67890

node ('Linux'){
  stage ('Gathering SCM changes'){
  def eJob= build job: "Project_name/Test_job", wait: true
    if (eJob.changeSets.size() > 0 && eJob.changeSets.items.size() > 0) {
        println "Count list item: ${eJob.changeSets.items[0].msg.size()}"
        for (i = 0; i <eJob.changeSets.items[0].msg.size(); i++) {
            println "Msg:" +  eJob.changeSets.items[0].msg[i].substring(
                eJob.changeSets.items[0].msg[i].indexOf('#') + 1, 
                eJob.changeSets.items[0].msg[i].indexOf(':'))
            }
        }
    }
}

Если в цикле просто печатать msg, то сообщение придет полностью. Можно еще прикрутить author.fullName и получить автора этого коммита

 println eJob.changeSets.items[0].author.fullName 

PS все это на DLS Groovy для Jenkins Pipeline plugin

gadzira
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.