Как запустить 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 указал мне верное направление, но предоставленная им ссылка не имела никакого смысла.

Вот ссылка, которая помогла мне.

https://issues.jenkins-ci.org/browse/JENKINS-45666?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel

Вы должны добавить 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
Другие вопросы по тегам