git - Sådan får du adgang til BRANCH\_NAME-variablen inden for en Jenkins-rørledning, der kører på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skrev en Jenkins pipeline, som git kloner et lager, bygger funktionen filialer kode og hvis alt er færdigt med succes, bør det fusionere filialen til at mestere.


her er den relevante kode:


stage ('Merge to master') {
    if(currentBuild.result == 'SUCCESS') {
        bat """
            cd \%workspace\%
            echo "BRANCH\_NAME: \%BRANCH\_NAME\%"
            echo "Env.BRANCH\_NAME: \%env.BRANCH\_NAME\%
            git checkout master
            REM git merge \%GIT\_BRANCH\%
        """
    }
}


Koden som er ansvarlig for kloningen:


stage ('Checkout SCM') { // This stage is responsible to clone the repository into Jenkins's workspace
            checkout([$class: 'GitSCM', branches: [**name: '*/feature/*'**], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [**credentialsId: '99f978af-XXXX-XXXX-8147-2cf8f69ef864', url: 'http://TFS\_SERVER:8080/tfs/DefaultCollection/PC\_International/\_git/repo-name'**]])
} 


Mit problem er, at det ser ud til, at BRANCH\_NAME-variablen ikke er indstillet, jeg har forsøgt at få adgang til den ved \%BRANCH\_NAME\%, \%env.BRANCH\_NAME\%, \%GIT\_BRANCH\% og \%env.GIT\_BRANCH\% men til ingen nytte.


I Jenkins build log ser det sådan ut:


C:Program Files (x86)JenkinsworkspaceEnsure>echo "BRANCH\_NAME: " 
"BRANCH\_NAME: "

C:Program Files (x86)JenkinsworkspaceEnsure>echo "Env.BRANCH\_NAME:  
"Env.BRANCH\_NAME: 

C:Program Files (x86)JenkinsworkspaceEnsure>echo "GIT\_BRANCH: " 
"GIT\_BRANCH: "

C:Program Files (x86)JenkinsworkspaceEnsure>echo "Env.GIT\_BRANCH: env.GIT\_BRANCH" 
"Env.GIT\_BRANCH: env.GIT\_BRANCH"


Enhver ide om, hvad jeg gør galt?

Bedste reference


Du skal interpolere strengværdien ved hjælp af Groovy placeholders $ {}, dvs. $ {env.BRANCH\_NAME}


Dette vil erstatte variablen med strengen bogstavelig før batch scriptet udføres. \%\%-notationen er til interpolering af Windows-miljøvariabler, men env.BRANCH\_NAME er Jenkins miljøvariabel ikke en Windows-miljøvariabel.