Hier, mes jobs pullrequest ont échoué avec la sortie suivante:
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.
J'ai fait une enquête et j'ai vu que dans la propriété $ {sha1} il n'y avait rien. Lorsque je colle un chemin absolu pour extraire le générateur de demandes comme pr/341/merge au lieu de $ {sha1}, la construction fonctionne. Qu'est-ce que ça peut être?
Plugin client Git 1.9.0
Plugin API GitHub 1.44
J'ai passé beaucoup de temps là-dessus. Le commentaire ci-dessus "si je laisse ce champ vide" a fonctionné comme un charme. Dans SCM:
1) sélectionnez Git
2) Nom: Origin
3) Refspec: +refs/pull/*:refs/remotes/Origin/pr/*
4) Branches à construire: laisser en blanc
Cela a résolu l'erreur ci-dessus.
Comme indiqué ici , si vous souhaitez créer manuellement le travail, dans la configuration du travail, vérifiez Cette construction est paramétrée et ajoutez une chaîne paramètre nommé sha1
avec une valeur par défaut de master
. Au démarrage de la construction, donnez le paramètre de validation sha1 que vous voulez construire ou refname (par exemple: Origin/pr/9/head).
cela se produit parfois si "Branch Specifier" n'est pas défini correctement. J'ai corrigé le spécificateur et cela a fonctionné pour moi.
*/release/release4.5.0
ou
*/fetaure/myfeature
Je suis tombé sur le même problème et y ai passé 4 heures, mais j'ai finalement résolu le problème.
Dans mon cas, l'erreur était due à un mauvais exe Git. Dans Jenkins, tout en définissant le chemin Git exe sur Windows, définissez le chemin sous le dossier cmd
Dans mon cas, c'était C:\Program Files\Git\cmd\git.exe
Cela a résolu mon problème.
J'ai corrigé ce même message d'erreur en en utilisant le refs/heads/<branchName>
syntaxe dans "Branches à construire - spécificateur de branche" .
Par exemple, au lieu de Origin/master
, Je mets refs/remotes/Origin/master
comme spécificateur de branche pour corriger le travail.
(Dans mon cas, je ne sais pas ce qui a provoqué l'apparition de ce message d'erreur, car le travail fonctionnait correctement auparavant avec juste Origin/master
comme spécificateur de branche. Il peut s'agir d'une mise à jour ou d'un changement de configuration connexe ...)
Notez que vous pouvez utiliser git show-ref
commande pour répertorier les références dans un référentiel local, par exemple.
git show-ref master
28f1f186807d1316bf1c59631d6d8825a5087e27 refs/heads/master
28f1f186807d1316bf1c59631d6d8825a5087e27 refs/remotes/Origin/master
Également "?" la documentation d'aide à côté du champ "Spécificateur de branche" prend également en charge cette réponse comme l'option la plus sûre pour spécifier le spécificateur de branche pour vous assurer que la branche attendue est sans ambiguïté:
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.
Après beaucoup de recherches et de casse-tête. Je recevais la même erreur et j'ai découvert que cette erreur se produit également si vous utilisez un chemin git différent. Assurez-vous d'avoir le bon chemin. Par exemple: j'ai remplacé C:\Program Files\Git\git-bash.exe par C:\Program Files\Git\bin\git.exe et cela a résolu le problème.
J'ai eu le même problème. Dans mon cas, la cause était que j'ai utilisé un référentiel github qui était le miroir d'un référentiel svn (car svn n'est pas correctement supporté par SonarCloud). La valeur par défaut dans Jenkins était */master
. La solution ( trouvée par Gavin McDonald d'Apache INFRA ) était d'utiliser */trunk
. Un autre problème est le ".git" dans l'URL, qui ne devrait pas être utilisé.
Chaque fois que nous ne spécifions pas une branche correcte à extraire, le git recherchera toutes les branches du référentiel et finira par générer une erreur disant "Impossible de trouver une révision à construire. Vérifiez la configuration du référentiel et de la branche pour ce travail. "
J'avais rencontré le même problème avec mon git pull et j'utilisais jenkins pour spécifier la configuration.
Si nous le laissons vide, il obtiendrait les fichiers de la branche principale, mais si quelque chose ne va pas ou s'il y a une faute de frappe, il rechercherait toutes les branches et lancerait une erreur disant que la branche n'est pas trouvée.