Как распечатать значение свойства класса в Jenkinsfile? - PullRequest
0 голосов
/ 17 апреля 2019

Я создаю Jenkinsfile для использования с GitHub Enterprise.Я использовал настройки графического интерфейса в конвейерном задании, чтобы указать Jenkinsfile из репозитория GitHub.Я использую скриптовый синтаксис вместо декларативного синтаксиса.Я могу оформить репо в моем Jenkinsfile, используя checkout scm.Я хочу использовать некоторую информацию об оформлении заказа в моем скрипте, такую ​​как имя ветви и хеш коммита.Однако я не могу понять, как получить доступ к переменным класса scm.

Когда я запускаю задание, на этапе Checkout происходит сбой.Похоже, что извлечение из git работает правильно, но оно не выдает никаких ошибок.Если я удаляю строку echo scm.GIT_BRANCH, она работает нормально.

node {
  stage('Checkout') {
    checkout scm
    echo scm.GIT_BRANCH
  }
}

Вот вывод:

Started by user spark
Obtained nightly/Jenkinsfile from git https://github.enterprise.instance.com/spark/ci_flow_test
[Pipeline] node
Running on jenkins-server in /home/spark/ci_flow_test/pipeline_test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Checkout)
[Pipeline] checkout
 > /apps/git/git18/bin/git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > /apps/git/git18/bin/git config remote.origin.url https://github.enterprise.instance.com/spark/ci_flow_test # timeout=10
Fetching upstream changes from https://github.enterprise.instance.com/spark/ci_flow_test
 > /apps/git/git18/bin/git --version # timeout=10
using GIT_ASKPASS to set credentials 
 > /apps/git/git18/bin/git fetch --tags --progress https://github.enterprise.instance.com/spark/ci_flow_test +refs/heads/*:refs/remotes/origin/*
 > /apps/git/git18/bin/git rev-parse refs/remotes/origin/working^{commit} # timeout=10
 > /apps/git/git18/bin/git rev-parse refs/remotes/origin/origin/working^{commit} # timeout=10
Checking out Revision 396f172c6061ba2760a71cba817df24836ec7e3b (refs/remotes/origin/working)
Commit message: "try echo"
 > /apps/git/git18/bin/git config core.sparsecheckout # timeout=10
 > /apps/git/git18/bin/git checkout -f 396f172c6061ba2760a71cba817df24836ec7e3b
 > /apps/git/git18/bin/git rev-list 778c36171927020bd1afbd7206d86bf94abd1ed8 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] mail
[Pipeline] echo
Post script
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: FAILURE

1 Ответ

1 голос
/ 18 апреля 2019

Вы можете использовать возвращаемое значение checkout scm для получения информации git

node {

    stage('Checkout') {
        def d = checkout scm

        echo "branch: " + d.GIT_BRANCH
        echo "commit: " + d.GIT_COMMIT
    }
}

// supported fields
GIT_AUTHOR_EMAIL 
GIT_AUTHOR_NAME 
GIT_BRANCH 
GIT_COMMIT
GIT_COMMITTER_EMAIL 
GIT_COMMITTER_NAME 
GIT_LOCAL_BRANCH 
GIT_PREVIOUS_COMMIT
GIT_PREVIOUS_SUCCESSFUL_COMMIT
GIT_URL
...