2016-09-20 12 views
6

Mam zadanie Pipeline Jenkins, które jest skonfigurowane do kasowania repozytorium git i określonego lokalnego oddziału.Jak uzyskać dostęp do nazwy oddziału Git z pracy w rurociągu?

Jak mogę uzyskać nazwę oddziału lokalnego w moim pliku Jenkins?

Próbowałem załadować właściwości git jenkins plugin env, ale nie miałem szczęścia.

node { 
    checkout scm 
    echo "1 "+ env.GIT_LOCAL_BRANCH 
    echo "2 "+ env.GIT_BRANCH 
} 

Obie wartości są „null”

Odpowiedz

2

Jestem teraz za pomocą wywołania sh uzyskać nazwę oddziału. Wymaga to co najmniej wersji 2.4 węzłów Pipeline i Pluginów procesów.

def branchName = sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim() 
echo branchName 
0

Można użyć scm atrybuty, aby uzyskać listę oddziałów skonfigurowany dla scm:

// List of all configured branches 
def allBranches = scm.branches 

// Only the first configured branch name 
def gitBranch = scm.branches[0].name 
+3

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Skrypty nie mogą używać metody hudson.plugins.git.GitSCM getBranches –

0

odkryłem, że mogę uchwycić wartości zwracanej z checkout scm i używać, aby uzyskać nazwę oddziału (oraz inne wartości)

def scmVars 

    node('api-sample-build') { 
    stage('Clone source code') { 
     scmVars = checkout scm 
     // scmVars contains the following values 
     // GIT_BRANCH=origin/mybranch 
     // GIT_COMMIT=fc8279a107ebaf806f2e310fce15a7a54238eb71 
     // GIT_PREVIOUS_COMMIT=6f2e319a1fc82707ebaf800fce15a7a54238eb71 
     // GIT_PREVIOUS_SUCCESSFUL_COMMIT=310fce159a1fc82707ebaf806f2ea7a54238eb71 
     // GIT_URL=https://stash.someworkplace.com/scm/poc/api-sample.git 
    } 
    stage('test scope') { 
     echo scmVars.GIT_BRANCH 
    } 
    } 

Poprzez określenie zmiennej poza węzłem jest ona dostępna w fazie po zakończeniu transakcji.