我试图在通过分支定义的詹金斯中设置条件代理,例如:
cloud = myconditional()
pipeline {
agent {
kubernetes {
cloud cloud
}
}
并且,函数myconditional
在库/vars/myconditional.groovy
中定义
def call() {
def cloud = "clusterB"
echo "Branch ${env.GIT_BRANCH}"
if ("${env.GIT_BRANCH}" != "master") {
echo "use clusterA"
cloud = "clusterA"
}else{
echo "use clusterB"
}
return cloud
...
但是我得到Branch null
。
使用scm
def getGitBranchName() {
return scm.branches[0].name
}
def call() {
def cloud = "clusterB"
def branch = getGitBranchName()
echo "Branch ${branch}"
if (branch != "master") {
echo "use clusterA"
cloud = "clusterA"
}else{
echo "use clusterB"
}
return cloud
但是我得到了org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method hudson.plugins.git.BranchSpec getName
,并且我没有更改Jenkins配置的权限。
我尝试打印环境变量,但我得到了:
def call() {
sh 'env > env.txt'
sh 'cat env.txt'
....
我有:org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
我的问题是,我如何才能从管道中获得实际的分支{}?
非常感谢
答案 0 :(得分:1)
如果使用的是Jenkins多分支管道,则可以使用以下变量获取分支名称。
env.BRANCH_NAME
您可以使用以下条件:
if ("${BRANCH_NAME}" != "master" ) {
...
} else {
...
}