Jenkinsfile использует команду checkout scm
для получения самого последнего коммита из связанного репозитория Bitbucket.
Какой конкретный синтаксис необходимо добавить в Jenkinsfile, чтобы Jenkinsfile мог извлекать repositorySlug
и projectKey
из исходного репозитория в качестве переменных, а затем распечатывать эти переменные в виде вывода на консоль? * *
Образец Jenkinsfile:
Я попытался включить идеи из документации по этапу Jenkins Pipeline SCM в следующем примере Jenkinsfile, полученные журналы которого будут показаны ниже:
node {
// Clean workspace before doing anything
deleteDir()
try {
stage ('Clone') {
def commitHash = checkout(scm).GIT_COMMIT
sh "echo 'Commit hash is: ${commitHash}'"
println commitHash
def repName = checkout(scm).repoName
sh "echo 'Repository Name is: ${repName}'"
println repName
def rep = checkout(scm).repo
sh "echo 'Repository is: ${rep}'"
println rep
def nm = checkout(scm).name
sh "echo 'Name is: ${nm}'"
println nm
}
} catch (err) {
currentBuild.result = 'FAILED'
throw err
}
}
Токовый выход:
Вот вывод консоли, который генерирует Jenkins при запуске предыдущего Jenkinsfile:
General SCM<1s
echo 'Commit hash is: bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3'— Shell Script<1s
bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3— Print Message<1s
General SCM<1s
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git # timeout=10
Fetching without tags
Fetching upstream changes from http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git
> git --version # timeout=10
using GIT_ASKPASS to set credentials
> git fetch --no-tags --progress http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git +refs/heads/sample-issue-branch:refs/remotes/origin/sample-issue-branch
Checking out Revision bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3 (sample-issue-branch)
> git config core.sparsecheckout # timeout=10
> git checkout -f bd279b90ad9f78ee8abb4d4fbf2a621d42150dd3
Commit message: "name"
[Bitbucket] Notifying commit build result
echo 'Repository Name is: null'— Shell Script<1s
null— Print Message<1s
General SCM<1s
echo 'Repository is: null'— Shell Script<1s
null— Print Message<1s
General SCM<1s
echo 'Name is: null'— Shell Script<1s
null— Print Message<1s
Обратите внимание, что projectKey
и repositorySlug
доступны в журналах выше в виде:
http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git
Пересмотренный вопрос:
Для приведенных выше данных какой конкретный синтаксис необходимо добавить в файл Jenkinsfile, чтобы в полученных журналах Jenkins распечатывалось следующее:
The projectKey is: JSP
The repositorySlug is: jenkinsfile-simple-repo