Как запустить git diff-tree против master ветки в jenkins?
Я хотел бы видеть, какие файлы изменились между моей текущей веткой и главной веткой во время сборки jenkins.
в моем jenkinsfile у меня есть код ниже.
git diff-tree -r --no-commit-id --name-only ${env.GIT_COMMIT} origin/master
но я получаю ошибку ниже
роковой: двусмысленный аргумент 'master': неизвестная ревизия или путь не в рабочем дереве.
Буду признателен за любую помощь... было бы замечательно, если бы кто-то мог сказать мне, что я делаю неправильно, или разработать альтернативное решение, которое даст мне пути к файлам, которые изменились.
Кстати, вышеупомянутая команда работает локально, но не в jenkins.
3 ответа
Я наконец нашел решение для этого. @vonc указал мне верное направление, но предоставленная им ссылка не имела никакого смысла.
Вот ссылка, которая помогла мне.
Вы должны добавить refspec в настройках jenkins для проекта. Если вы используете GitHub организации, вы должны подать заявку в настройках организации, так как вы не можете изменить конкретные настройки репозитория. Во всяком случае, это работает для меня.
Добавьте это как refspec.
+refs/heads/master:refs/remotes/@{remote}/master
Это должно означать, что нет master
ветвь проверил в рабочем пространстве Дженкинс.
Это типично для клонированного репо, чья ветвь по умолчанию не master
,
Обязательно сделайте предварительный шаг в jenkins:
git checkout -b master origin/master
Затем попробуйте еще раз.
Чтобы перечислить измененные файлы из текущей HEAD(текущая фиксация) в основную (основную) ветку.
git diff-tree -r --no-commit-id --name-only HEAD origin/main