Доступ к переменным SCM (Git) в задании Jenkins Pipeline

Вот мой код конвейера:

node ('master') {
    git url: "$GIT_REPO_URL", branch: "$GIT_BRANCH"
    echo env.GIT_COMMIT
    echo env.GIT_BRANCH
    echo env.GIT_REVISION
}

Результат сборки выглядит так:

Started by user anonymous
[Pipeline] Allocate node : Start
Running on master in /var/lib/jenkins/jobs/test/workspace
[Pipeline] node {
[Pipeline] git
 > git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git config remote.origin.url https://acme/scm/app.git # timeout=10
Fetching upstream changes from https://acme/scm/app.git
 > git --version # timeout=10
 > git fetch --tags --progress https://acme/scm/app.git +refs/heads/*:refs/remotes/origin/*
 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision fb455725db1b768ff63e627a087d2771099af7c4 (refs/remotes/origin/master)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f fb455725db1b768ff63e627a087d2771099af7c4 # timeout=10
 > git branch -a -v --no-abbrev # timeout=10
 > git branch -D master # timeout=10
 > git checkout -b master fb455725db1b768ff63e627a087d2771099af7c4
 > git rev-list fb455725db1b768ff63e627a087d2771099af7c4 # timeout=10
[Pipeline] echo
null
[Pipeline] echo
null
[Pipeline] echo
null
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
Finished: SUCCESS

Переменные env env.GIT_COMMIT, env.GIT_BRANCH не заполняются. Доступны ли эти значения в других переменных?


person Henrique Gontijo    schedule 08.03.2016    source источник
comment
Какой смысл отмечать дубликат без ссылки на оригинал??? Это совершенно не круто и никому не нужно!!!!!   -  person U.V.    schedule 07.05.2019


Ответы (1)


Вот пример того, как вы можете получить GIT_COMMIT (ссылка: Jenkins GitHub):

// These should all be performed at the point where you've
// checked out your sources on the agent. A 'git' executable
// must be available.
// Most typical, if you're not cloning into a sub directory
shortCommit = sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim()

Вы также можете расширить его, чтобы открыть GIT_BRANCH. Этот сценарий взят из репозитория Git с примерами рабочего процесса, которым управляет cloudbees. Возможно, вы можете отправить запрос на извлечение, если добавите возможность получать переменную GIT_BRANCH.

person Chida    schedule 10.03.2016
comment
На самом деле вы не можете расширить это, чтобы получить GIT_BRANCH, так как jenkins проверяет состояние отсоединенной головы. - person aflat; 17.04.2018
comment
Вы можете использовать более короткую команду, которая возвращает тот же результат git describe --always. - person Romain; 31.05.2019
comment
пожалуйста, поместите ответ в строку, а не в гиперссылку. Та. - person Banoona; 03.06.2019