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

< Сильный > Пример:

  • Создайте PR с 3 коммитами, начинается новая работа Дженкинса;
  • Список измененных файлов включает в себя все файлы из 3 коммитов;
  • Сборка завершается неудачно, вставляет новый коммит с исправлением в PR, запускаются новые задания jenkins;
  • Список измененных файлов включает только файлы нового коммита;

Итак, в этом примере я хочу получить список файлов из всех новых коммитов в PR.

< Сильный > Код:

  def changeLogSets = currentBuild.rawBuild.changeSets
    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]
            def files = new ArrayList(entry.affectedFiles)
            for (int k = 0; k < files.size(); k++) {
                def file = files[k]
                print file.path 
            }
        }
    }
5
extmkv 30 Май 2019 в 12:48

2 ответа

Лучший ответ

Я нашел решение с помощью команды git:

/**
 * Compares the current branch and target branch and extract the changed files.
 *
 * @return the PR changed files.
 */
def getPRChangelog() {
    return sh(
            script: "git --no-pager diff origin/${params.target} --name-only",
            returnStdout: true
    ).split('\n')
}
1
extmkv 7 Июл 2019 в 18:05

Используйте плагин Git (если вы еще этого не сделали). Тогда что-то вроде:

git diff --name-status $GIT_PREVIOUS_SUCCESSFUL_COMMIT..$GIT_COMMIT > allchanges

Это даст вам список всех изменений с момента последней успешной сборки.

1
tkosinski 30 Май 2019 в 14:37