我希望能够从另一个非多分支管道项目(称为项目B)触发Jenkins multibranch管道(称为项目A)。
我希望项目B中的任何分支在A中的相应分支中触发构建。我认为最好的方法是在B的Jenkins文件中,确定当前分支。遗憾的是,BRANCH_NAME变量不适用于标准(非多分支)Jenkins管道。我知道我可以通过生成一个shell并调用" git branch"来确定分支。像这样:
sh '''
MYBRANCH=`git branch`
'''
但是,如何让shell变量可用于其父管道?
最后,从项目B开始,我(希望)最终会打电话:
build job: "project-A/${MYBRANCH}", wait: false
** 更新 **
我最后通过不同的路线来解决我的问题。
我将两个存储库(A& B)放入一个多分支管道Job中。通过这样做,B的当前分支可用作变量(我可以根据需要对其进行修改),然后触发repo A的构建。它似乎正在工作。
谢谢!
答案 0 :(得分:0)
如果您正在调用某个职位的职位,然后as illustrated here,您可以在参数中传递变量:
build job:'/Folder/JobB',parameters: [string(name: 'BRANCH', value: "${params.BRANCH}")], propagate: false
}
但如果没有,请参阅this answer:尝试使用CopyArtifact plugin写入文件并将其复制到作业/工作区。
答案 1 :(得分:0)
您需要告诉Jenkins捕获命令的标准输出并分配给变量:
def MYBRANCH = sh( script: 'git branch', returnStdout: true)
在声明中,您需要将其包装在script{}
步骤中。根据您使用MYBRANCH变量的位置和方式,您可能必须在其他地方声明变量,以确保它在适当位置的范围内。