Изолируйте имя ветви репозитория в Jenkinsfile. - PullRequest
0 голосов
/ 02 мая 2018

Какие конкретные изменения необходимо внести в Jenkinsfile ниже, чтобы изолировать имя ветви коммита в переменной, которую можно распечатать в журналах? В приведенном ниже случае , название филиала GWS-43-getissueforcommit.

Вот особенности:


Jenkinsfile:

Следующий Jenkinsfile выводит имя ветви в середине вывода, полученного при выполнении команды checkout(scm).GIT_ASKPASS, но эта информация теряется, когда следующая строка кода (sh "echo 'The repo Ask Pass is: ${repoAskPass}'") пытается распечатать инкапсулированный Результат команды:

node {
    // Clean workspace before doing anything
    deleteDir()
    try {
        stage ('Clone') {
            def repoAskPass = checkout(scm).GIT_ASKPASS
            sh "echo 'The repo Ask Pass is: ${repoAskPass}'"
        }
    } catch (err) {
        currentBuild.result = 'FAILED'
        throw err
    }
}


Результирующие журналы:

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

General SCM<1s
    Cloning the remote Git repository
    Cloning with configured refspecs honoured and without tags
    Cloning repository http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git
     > git init /var/jenkins_home/workspace/ne_GWS-43-getissueforcommit-M2X23QGNMETLDZWFK7IXVZQRCNSWYNTDFJZU54VP7DMIOD6Z4DGA # timeout=10
    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 Bitbucket server credentials
     > git fetch --no-tags --progress http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git +refs/heads/GWS-43-getissueforcommit:refs/remotes/origin/GWS-43-getissueforcommit
     > git config remote.origin.url http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git # timeout=10
     > git config --add remote.origin.fetch +refs/heads/GWS-43-getissueforcommit:refs/remotes/origin/GWS-43-getissueforcommit # timeout=10
     > git config remote.origin.url http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git # timeout=10
    Cleaning workspace
     > git rev-parse --verify HEAD # timeout=10
    No valid HEAD. Skipping the resetting
     > git clean -fdx # timeout=10
    Fetching without tags
    Fetching upstream changes from http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git
    using GIT_ASKPASS to set credentials Bitbucket server credentials
     > git fetch --no-tags --progress http://<bitbucket-ip-on-lan>:7990/scm/JSP/jenkinsfile-simple-repo.git +refs/heads/GWS-43-getissueforcommit:refs/remotes/origin/GWS-43-getissueforcommit
    Checking out Revision 375b17c4e7453d802d94659836db436553cc7f0c (GWS-43-getissueforcommit)
     > git config core.sparsecheckout # timeout=10
     > git checkout -f 375b17c4e7453d802d94659836db436553cc7f0c
     > git branch -a -v --no-abbrev # timeout=10
     > git checkout -b GWS-43-getissueforcommit 375b17c4e7453d802d94659836db436553cc7f0c
    Commit message: "isolate ASKPASS"
     > git rev-list --no-walk 268c468a96de0fb27b6f205658a169b38871b581 # timeout=10
    Cleaning workspace
     > git rev-parse --verify HEAD # timeout=10
    Resetting working tree
     > git reset --hard # timeout=10
     > git clean -fdx # timeout=10
    [Bitbucket] Notifying commit build result

echo 'The repo Ask Pass is: null'— Shell Script<1s
    [ne_GWS-43-getissueforcommit-M2X23QGNMETLDZWFK7IXVZQRCNSWYNTDFJZU54VP7DMIOD6Z4DGA] Running shell script
    + echo The repo Ask Pass is: null
    The repo Ask Pass is: null


Пересмотренный вопрос:

Как нужно изменить вышеуказанный Jenkinsfile, чтобы вывести в журналы следующую строку:

The name of the branch containing the commit for this build is: 
GWS-43-getissueforcommit

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

Учитывая, что вы упомянули Jenkinsfile Я полагаю, вы используете проект Multi-Office. В этом случае имя ветви всегда доступно в качестве переменной среды: env.BRANCH

0 голосов
/ 02 мая 2018

GIT_ASKPASS используется для получения учетных данных пользователя - это не относится к ветви.

Здесь - список переменных, которые устанавливает плагин, который вы можете использовать. Отсюда вы можете видеть, что GIT_BRANCH дает вам удаленную ветвь, а GIT_LOCAL_BRANCH - локальную ветвь, проверенную.

def branch = checkout(scm).GIT_BRANCH
sh "echo 'The name of the branch containing the commit for this build is: ${branch}'"

Печатает имя удаленной ветви вместе с префиксом источника (что обычно желательно). Но если вы хотите без префикса:

def branch = checkout(scm).GIT_BRANCH
branch = branch.substring(branch.indexOf('/') + 1)
sh "echo 'The name of the branch containing the commit for this build is: ${branch}'"
...