Я хочу иметь список измененных файлов в 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
}
}
}
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')
}
Используйте плагин Git (если вы еще этого не сделали). Тогда что-то вроде:
git diff --name-status $GIT_PREVIOUS_SUCCESSFUL_COMMIT..$GIT_COMMIT > allchanges
Это даст вам список всех изменений с момента последней успешной сборки.
Новые вопросы
git
Git - это система управления распределенными версиями с открытым исходным кодом (DVCS). Используйте этот тег для вопросов, связанных с использованием Git и рабочими процессами. НЕ ИСПОЛЬЗУЙТЕ тег [github] для решения проблем, связанных с Git, просто потому, что репозиторий размещен на GitHub. Также не используйте этот тег для общих вопросов по программированию, которые связаны с репозиторием Git.