小编典典

如何为詹金斯多分支管道项目设置特定的工作区文件夹

jenkins

我有一个外部工具,应该在我的詹金斯工作之一中称为构建步骤。不幸的是,该工具在引用命令方面存在一些问题,以避免在调用路径中出现空格问题。

Jenkins已安装在中C:\Program Files (x86)\Jenkins。因此,詹金斯在调用外部工具时遇到了麻烦。

我试图在Jenkins-> configuration中将“ Workspace Root
Directory”设置C:\jenkins_workspace为以避免任何空格。这适用于Freestyle项目,但我的Multibranch
Pipeline项目仍在检出并在下构建C:\Program Files (x86)\Jenkins\workspace

一种解决方案是将整个jenkins安装移至例如C:\jenkins。我想避免这一点。是否有一种正确的方法来告诉Jenkins
Pipeline作业也使用“工作区根目录”?

谢谢你的帮助


阅读 266

收藏
2020-07-25

共1个答案

小编典典

ws指令设置其中的命令的工作区。对于声明性管道,它是这样的:

ws("C:\jenkins") {
  echo "awesome commands here instead of echo"
}

您还可以调用脚本来构建customWorkspace以便使用:

# if the current branch is master, this helpfully sets your workspace to /tmp/ma
partOfBranch = sh(returnStdout: true, script: 'echo $BRANCH_NAME | sed -e "s/ster//g"')
path = "/tmp/${partOfBranch}"
sh "mkdir ${path}"
ws(path) {
  sh "pwd"
}

您还可以通过使用该agent块(通常在块的顶部pipeline)对其进行全局设置,并将其应用于node该级别:

pipeline {
  agent {
    node {
      label 'my-defined-label'
      customWorkspace '/some/other/path'
    }
  }
  stages {
    stage('Example Build') {
      steps {
        sh 'mvn -B clean verify'
      }
    }
  }
}

node稍后的另一条指令可能会覆盖它。customWorkspacehttps://jenkins.io/doc/book/pipeline/syntax/中进行搜索。您也可以将其与dockerdockerfile指令一起使用。

2020-07-25