Ale*_*ski 39 git branch jenkins jenkins-pipeline
我创建了一个jenkins管道,它从scm中提取管道脚本.
我将分支说明符设置为' all
',因此它建立在对任何分支的任何更改上.
如何从Jenkinsfile访问导致此构建的分支名称?
我尝试过的所有东西都回声无效
sh(returnStdout: true, script: 'git rev-parse --abbrev-ref HEAD').trim()
Run Code Online (Sandbox Code Playgroud)
这总是如此master
.
Jam*_*mes 37
使用multibranch管道..而不是管道
在我的脚本..
stage('Build') {
node {
echo 'Pulling...' + env.BRANCH_NAME
checkout scm
}
}
Run Code Online (Sandbox Code Playgroud)
产量...
Pulling...master
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 16
如果您有管道的jenkins文件,请检查您是否在执行时看到环境变量中的分支名称.
你可以打印出来:
pipeline {
agent any
environment {
DISABLE_AUTH = 'true'
DB_ENGINE = 'sqlite'
}
stages {
stage('Build') {
steps {
sh 'printenv'
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,PR 91显示分支名称仅在某些管道配置中设置:
ale*_*lex 12
对我来说这有效:(使用 Jenkins 2.150,使用简单的管道类型 - 不是多分支,我的分支说明符:'**')
echo 'Pulling... ' + env.GIT_BRANCH
Run Code Online (Sandbox Code Playgroud)
输出:
Pulling... origin/myBranch
Run Code Online (Sandbox Code Playgroud)
其中 myBranch 是功能分支的名称
小智 11
对于管道:
pipeline {
environment {
BRANCH_NAME = "${GIT_BRANCH.split("/")[1]}"
}
}
Run Code Online (Sandbox Code Playgroud)
一位同事告诉我使用scm.branches[0].name
它并且有效.我把它包装到Jenkinsfile中的一个函数中:
def getGitBranchName() {
return scm.branches[0].name
}
Run Code Online (Sandbox Code Playgroud)
scm.branches
如果您使用构建参数作为分支说明符(例如 ),仅获取名称是不够的${BRANCH}
。您需要将该字符串扩展为真实姓名:
scm.branches.first().getExpandedName(env.getEnvironment())
Run Code Online (Sandbox Code Playgroud)
请注意,getEnvironment()
必须是显式 getter,否则env
将查找名为environment的环境变量。
不要忘记您需要批准这些方法才能从沙箱中访问它们。
小智 5
这是用于简单的管道类型 - 不是多分支。使用詹金斯 2.150.1
environment {
FULL_PATH_BRANCH = "${sh(script:'git name-rev --name-only HEAD', returnStdout: true)}"
GIT_BRANCH = FULL_PATH_BRANCH.substring(FULL_PATH_BRANCH.lastIndexOf('/') + 1, FULL_PATH_BRANCH.length())
}
然后使用它 env.GIT_BRANCH
小智 5
要在 Jenkins 中获取 git 分支名称,如果它是多分支管道,那么我们可以轻松使用env.GIT_BRANCH。但如果是普通管道,那么我们可以使用 SCM 插件对象来检索分支名称。
下面的代码适用于普通管道和多分支管道。
def branch_nem = scm.branches[0].name
if (branch_nem.contains("*/")) {
branch_nem = branch_nem.split("\\*/")[1]
}
echo branch_nem
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
67989 次 |
最近记录: |