Git Не удалось выполнить задание PullRequest. Не удалось найти какую-либо ревизию для сборки. Проверьте конфигурацию репозитория и ветки для этого задания

Вчера мои попытки pullrequest завершились неудачно со следующим выходом:

11:07:41  > git rev-parse origin/${sha1}^{commit}
11:07:41  > git rev-parse ${sha1}^{commit}
11:07:41 ERROR: Couldn't find any revision to build. Verify the repository and branch configuration for this job.

Я провел расследование и увидел, что в собственности ${sha1} ничего не было. Когда я вставляю абсолютный путь, чтобы вытащить построитель запросов, например, pr/341/merge вместо ${sha1}, работает сборка. Что это может быть?

Git Клиентский плагин 1.9.0

Плагин API GitHub 1,44

Ответ 1

Я потратил на это много времени. Вышеупомянутый комментарий "если я покину это поле пустым" работал как шарм. В SCM:
1) выберите Git
2) Имя: origin
3) Refspec: +refs/pull/*:refs/remotes/origin/pr/*
4) Филиалы для сборки: оставьте пустым

Это решило указанную выше ошибку.

Ответ 2

Как указано здесь, Если вы хотите вручную создать задание, в настройке задания задайте эту сборку параметризированную и добавьте параметр string с именем sha1 со значением по умолчанию master. При запуске build дайте идентификатор фиксации параметра sha1, который вы хотите построить, или refname (например: origin/pr/9/head).

Ответ 3

иногда это происходит, если "Спецификатор ветки" не установлен должным образом. Я исправил спецификатор, и он работал для меня.

*/release/release4.5.0

или

*/feature/myfeature

Ответ 4

После многих исследований и головокружения. Я получал ту же ошибку, и я узнал, что эта ошибка также возникает, если вы используете другой путь git. Убедитесь, что у вас правильный путь. Например: Я заменил C:\Program Files\Git\git- bash.exe на C:\Program Files\Git\bin\git.exe и это решило проблему.

Ответ 5

Я исправил то же сообщение об ошибке, используя синтаксис refs/heads/<branchName> в разделе "Ответвления для построения - указатель ветки".

Например, вместо origin/master я указал refs/remotes/origin/master в качестве спецификатора ветки, чтобы исправить задание.

(В моем случае я не уверен, что послужило причиной появления этого сообщения об ошибке, так как ранее задание работало нормально только с origin/master в качестве спецификатора ветки. Возможно, это было связанное обновление или изменение конфигурации...)


Обратите внимание, что вы можете использовать команду git show-ref для вывода списка ссылок в локальном репозитории, например

git show-ref master
28f1f186807d1316bf1c59631d6d8825a5087e27 refs/heads/master
28f1f186807d1316bf1c59631d6d8825a5087e27 refs/remotes/origin/master

Кроме того, "?" Справочная документация рядом с полем "Спецификатор ветвления" также поддерживает этот ответ как самый безопасный вариант для указания спецификатора ветвления, чтобы убедиться, что ожидаемая ветвь однозначна:

Specify the branches if you'd like to track a specific branch in a repository. If left blank, all branches will be examined for changes and built.

The safest way is to use the refs/heads/<branchName> syntax. This way the expected branch is unambiguous.

Possible options:

<branchName>
Tracks/checks out the specified branch. If ambiguous the first result is taken, which is not necessarily the expected one. Better use refs/heads/<branchName>.
E.g. master, feature1,...

refs/heads/<branchName>
Tracks/checks out the specified branch.
E.g. refs/heads/master, refs/heads/feature1/master,...

<remoteRepoName>/<branchName>
Tracks/checks out the specified branch. If ambiguous the first result is taken, which is not necessarily the expected one.
Better use refs/heads/<branchName>.
E.g. origin/master

remotes/<remoteRepoName>/<branchName>
Tracks/checks out the specified branch.
E.g. remotes/origin/master

refs/remotes/<remoteRepoName>/<branchName>
Tracks/checks out the specified branch.
E.g. refs/remotes/origin/master

<tagName>
This does not work since the tag will not be recognized as tag.
Use refs/tags/<tagName> instead.
E.g. git-2.3.0

refs/tags/<tagName>
Tracks/checks out the specified tag.
E.g. refs/tags/git-2.3.0

<commitId>
Checks out the specified commit.
E.g. 5062ac843f2b947733e6a3b105977056821bd352, 5062ac84, ...

${ENV_VARIABLE}
It is also possible to use environment variables. In this case the variables are evaluated and the result is used as described above.
E.g. ${TREEISH}, refs/tags/${TAGNAME},...

<Wildcards>
The syntax is of the form: REPOSITORYNAME/BRANCH. In addition, BRANCH is recognized as a shorthand of */BRANCH, '*' is recognized as a wildcard, and '**' is recognized as wildcard that includes the separator '/'. Therefore, origin/branches* would match origin/branches-foo but not origin/branches/foo, while origin/branches** would match both origin/branches-foo and origin/branches/foo.

:<regular expression>
The syntax is of the form: :regexp. Regular expression syntax in branches to build will only build those branches whose names match the regular expression.

Ответ 6

Я столкнулся с той же проблемой и провел в ней 4 часа, но, наконец, решил ее.

В моем случае ошибка была из-за неправильного Git exe. Внутри Jenkins при настройке Git exe path для windows установите путь в папке cmd

В моем случае это был C:\Program Files\Git\cmd\git.exe

Это решило мою проблему.