Jenkins pipeline: la caisse explicite git commit

Je veux être en mesure de dire quelque chose comme:

git branch: commitHash, credentialsId: credentialsId, url: url

Le cas d'utilisation: je fais en parallèle de construire et de tester fonctionne sur différentes plates-formes, et que vous voulez de s'assurer que chacun reçoit le même code. C'est le C++, et nous nous appuyons sur des plateformes distinctes ainsi que la construction sur eux.

Si je le fais ci-dessus, il tombe en panne - le code sous-jacent suppose la branche est en fait une branche, ou que vous obtenez quelque chose comme:

[Linux64 Build]  > git rev-parse origin/e4b6c976a0a986c348a211579f1e8fd32cf29567^{commit} # timeout=10
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] //dir
[Pipeline] [Linux64 Build] }
[Pipeline] [Linux64 Build] //node
[Pipeline] [Linux64 Build] }
[Linux64 Build] Failed in branch Linux64 Build

J'ai vu des variations sur cette question posée, mais pas de réponses, juste des suggestions comme pour ranger le code source au lieu de cela, etc. Pas vraiment ce que je suis après.

La documentation suggère qu'il devrait être possible de donner explicite commettre des hachages, éventuellement à l'aide de branches à la place, mais je ne peux pas travailler la syntaxe et ne peut pas trouver des exemples. Quand je le fais, je reçois la branche master, je pense que - dans notre configuration, le maître ne fonctionne pas.

Jusqu'à présent, la seule solution que j'ai trouvé a été à la caisse de la succursale et ensuite appeler explicitement git pour obtenir la validation:

                git branch: branch, credentialsId: credentialsId, url: url
                sh 'git checkout ' + commitHash

(où la branche est la branche j'ai d'abord eu le hachage en haut de la tâche. Il fonctionne, mais n'est pas la plus élégante.

Quelqu'un a une meilleure façon?

InformationsquelleAutor johnfo | 2017-04-25