Jenkins pipeline: проверка явного git commit
Я хочу иметь возможность сказать что-то вроде:
git branch: commitHash, credentialsId: credentialsId, url: url
usecase: я делаю параллельные сборки и тестовые запуски на разных платформах и хочу убедиться, что каждый получает тот же код. Это C++, и мы строим на отдельных платформах,а также Строим на них.
Если я сделаю выше, это не удастся-базовый код предполагает, что данная ветвь на самом деле является ветвью, или вы получаете что-то вроде:
[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
Я видел варианты этого вопроса, заданного раньше, хотя никаких реальных ответов - просто предложения, как спрятать исходный код вместо этого и т. д. Не совсем то, что мне нужно.
документация предполагает, что должно быть возможно дать явные хэши фиксации, возможно, используя вместо этого ветви, но я не могу разработать синтаксис и не могу найти никаких примеров. Когда я это делаю, я получаю мастер - ветку, я думаю-в нашей настройке мастер не работает.
до сих пор единственным решением, которое я нашел, было проверить ветку, а затем явно вызовите git, чтобы получить фиксацию:
git branch: branch, credentialsId: credentialsId, url: url
sh 'git checkout ' + commitHash
(где ветвь-это ветвь, для которой я изначально получил хэш в верхней части задания. Он работает, но не самый аккуратный.
у кого-нибудь есть лучше способ?
2 ответов
использовать общие СКМ шаг
checkout([$class: 'GitSCM', branches: [[name: commitHash ]],
userRemoteConfigs: [[url: 'http://git-server/user/repository.git']]])
пример Юрия Г не работал для меня, когда Дженкинсу не хватало рабочего места из-за первоначальной проверки. В этом случае работает следующее. Я не понимаю, почему они такие разные.
def commitId = "<insert sha here>"
checkout ( [$class: 'GitSCM',
branches: [[name: commitId ]],
userRemoteConfigs: [[
credentialsId: 'deploy key for your repo',
url: 'repo url']]])