Как проверить изменения кода, сделанные конкретным Автором в конвейерном декларативном скрипте - PullRequest
0 голосов
/ 04 июля 2018

У нас есть репо, которое содержит несколько проектов, и всякий раз, когда мы выпускаем наш скрипт, все снимки меняются с конкретными версиями.

, что может привести к триггеру для создания задания Дженкина.

В настоящее время я использую работу и перемещаюсь по списку проектов и ограничиваюсь следующим сценарием оболочки.

  • Как я могу добиться того же в декларативном конвейере для раздельного создания подпроектов и определения автора изменений?
  • Если я запускаю вручную, можно ли декларативно определить, что код получил изменение?

    для файла в cat projects-list.txt; do if test -d $ file; то

    echo "Checking project $file"
    AUTHOR=$(git log -1 --format='%an' -- "$file")
    if [ "${AUTHOR}" != "release" ]; then
      echo "Detected changes in project $file"
      cd $file
      echo "Building project $file"
      mvn clean install -U`
    

Я также попробовал следующий скрипт, но переменные печатают ноль, я тестирую с помощью опции "конвейерный скрипт" плагина конвейера. (Встроенный скрипт)

pipeline {
    agent any
    stages {
        stage ('checkout') {
            steps {
                git url: 'https://my.com/scm/java/my.git'
            }
        }
        stage('Build') {
            steps {
                echo 'Building.. branch'+env.BRANCH_NAME
                echo env.CHANGE_AUTHOR
                echo env.CHANGE_AUTHOR_DISPLAY_NAME
            }
        }
    }
}

1 Ответ

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

Я пошагово ввел следующий скрипт, если у кого-то есть лучшее решение, обновите

script {
    def changeLogSets = currentBuild.changeSets
    def commitAuthor ="" 
    def commitMsg    =""
    for (int i = 0; i < changeLogSets.size(); i++) {
        def entries = changeLogSets[i].items
        for (int j = 0; j < entries.length; j++) {
            def entry = entries[j]
            commitAuthor = "${entry.author}"
            commitMsg    = "${entry.msg}" 
            echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}"        
        }
    }

    if(commitAuthor == 'release' || commitMsg.contains("INTERIM") ) {
        echo "condition meet"                                                                     
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...