如何从jenkinsfile

时间:2017-08-18 00:48:37

标签: jenkins jenkins-pipeline

env.JOB_NAME 管道名称后缀是分支名称。

所以 env.JOB_NAME 将是<jenkins_pipeline_name>_<my_branch>

如何获取管道名称并将其存储在我的jenkins文件顶部的环境{}块中的var中以通过该文件使用?

我不想仅仅使用脚本化管道声明。

5 个答案:

答案 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('*');
  }
  //..
}

Reference