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']]])