git jenkins branch jenkins-pipeline

Obtener el nombre de la rama git en Jenkins Jenkinsfile



jenkinsfile variables (6)

He creado una canalización de Jenkins y está extrayendo el guión de la tubería de SCM.
Establecí el especificador de rama en '' all '', por lo que se basa en cualquier cambio en cualquier rama.

¿Cómo accedo al nombre de la rama que causa esta compilación desde el archivo Jenkins?

Todo lo que he intentado osa fuera nulo excepto

sh(returnStdout: true, script: ''git rev-parse --abbrev-ref HEAD'').trim()

que siempre es master .


El cambio a una tubería multibranquio me permitió acceder al nombre de la sucursal. No se recomendó una tubería regular.


Para mí, esto funcionó: (usando Jenkins 2.150, usando un tipo de tubería simple, no multibranquios, mi especificador de rama: ''origen / ramas **'')

echo ''Pulling... '' + env.GIT_BRANCH

Salida:

Pulling... origin/myBranch

donde myBranch es el nombre de la rama característica


Si tiene un archivo jenkins para su canalización, verifique si ve en el momento de la ejecución el nombre de su rama en sus variables de entorno .

Puedes imprimirlos con:

pipeline { agent any environment { DISABLE_AUTH = ''true'' DB_ENGINE = ''sqlite'' } stages { stage(''Build'') { steps { sh ''printenv'' } } } }

Sin embargo, PR 91 muestra que el nombre de la rama solo se establece en ciertas configuraciones de canalización:


Solo obtener el nombre de scm.branches no es suficiente si ha utilizado un parámetro de compilación como un especificador de rama, por ejemplo, ${BRANCH} . Necesitas expandir esa cadena a un nombre real:

scm.branches.first().getExpandedName(env.getEnvironment())

Tenga en cuenta que getEnvironment() debe ser un getEnvironment() explícito; de lo contrario, env buscará una variable de entorno llamada entorno .

No olvide que necesita aprobar esos métodos para hacerlos accesibles desde el sandbox.


Un colega me dijo que usara scm.branches[0].name y funcionó. Lo envolví a una función en mi archivo Jenkins:

def getGitBranchName() { return scm.branches[0].name }


Usar tubería multibranquio ... no tubería

En mi guión ..

stage(''Build'') { node { echo ''Pulling...'' + env.BRANCH_NAME checkout scm } }

Rinde ...

Pulling...master