env.JOB_NAME 管道名称后缀是分支名称。
所以 env.JOB_NAME 将是<jenkins_pipeline_name>_<my_branch>
如何获取管道名称并将其存储在我的jenkins文件顶部的环境{}块中的var中以通过该文件使用?
我不想仅仅使用脚本化管道声明。
答案 0 :(得分:6)
由于您正在使用multibranch作业,因此env变量将返回它从分支创建的实际作业名称.i.e。 _ ..所以,如果没有一些机制来剥离/删除分支名称,我认为在jenkins开箱即用的内容中没有一个env变量。
答案 1 :(得分:2)
您可以检查http://YOUR-JENKINS-SERVER.com/pipeline-syntax/globals#env
,它将得到您
JOB_NAME
Name of the project of this build, such as "foo" or "foo/bar".
JOB_BASE_NAME
Short Name of the project of this build stripping off folder paths, such as "foo" for "bar/foo".
对于具有多个分支和PR的詹金斯组织项目,JOB_NAME
实际上是YOUR_ORG_NAME/YOUR_REPO_NAME/YOUR_BRANCH_OR_PR_NAME
,例如my-org/my-repo/PR-23
,而JOB_BASE_NAME
只是PR-23
。就像Israel said一样,您可以使用env.JOB_NAME.tokenize('/') as String[]
来获取想要的东西。
如果您想在Jenkins中使用更多精美的脚本,可以参考Groovy。
答案 2 :(得分:1)
@ red888指出了以下对我来说就像魔术一样的答案。我在实际答案中指出这一点,因为我几乎错过了它:
env.JOB_BASE_NAME
在以上评论中记入@ red888。以他/她的方式发送投票。
答案 3 :(得分:0)
在詹金斯管道中
def allJob = env.JOB_NAME.tokenize('/') as String[];
def projectName = allJob[0];
答案 4 :(得分:0)
env.JOB_NAME
是项目名称...没有疑问
但是,我的问题与copyArtifact插件有关。它说:
Unable to find project for artifact copy: YOUR_PROJECT_WITH_ARTIFACTS
This may be due to incorrect project name or permission settings;
最后,它不是“错误的项目名称”,并且env.JOB_NAME
必须起作用。
但是,问题是权限设置,通常可以通过以下方式修复:
pipeline {
agent any
options {
copyArtifactPermission('*');
}
//..
}