当前位置: 首页 > 面试题库 >

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

常自强
2023-03-14
问题内容

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

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作业也使用“工作区根目录”?

谢谢你的帮助


问题答案:

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稍后的另一条指令可能会覆盖它。customWorkspace在https://jenkins.io/doc/book/pipeline/syntax/中进行搜索。您也可以将其与dockerdockerfile指令一起使用。



 类似资料:
  • 我有一个外部工具,在我的jenkins工作中应该称为构建步骤。不幸的是,该工具在引用命令以避免从调用的路径中出现空格问题方面存在一些问题。 Jenkins安装在中。因此,我在jenkins调用外部工具时遇到了问题。 我尝试的是设置“工作区根目录”在詹金斯 - 一种解决方案是将整个詹金斯安装移动到例如。我想避免这种情况。有没有一种正确的方法来告诉 Jenkins 管道作业也使用“工作区根目录”? 感

  • 问题内容: 我们所有分支机构都有“阶段(构建)”。临时如何跳过此阶段,以便在多分支管道中的所有分支上运行。我知道一种解决方案是在阶段条件下使用,并要求所有开发人员将该分支拉入他们的分支。但这就是很多工作和协调。取而代之的是,我正在寻找一个全局配置,在该配置中,我们可以简单地按名称跳过任何分支上的阶段。 问题答案: 听起来好像您将Jenkinsfile放在代码的旁边,但是想要从管理的角度更改Jenk

  • 问题内容: 我正在使用Pipeline插件运行Jenkins 2。我已经建立了一个多分支管道项目,其中每个分支(主分支,开发分支等)的根目录都有一个Jenkinsfile。设置起来很简单。但是,即使代码没有更改,如何使每个分支定期运行(而不是分支索引)也让我迷惑不解。我需要在Jenkinsfile中添加什么以启用定期构建? 问题答案: 如果您使用声明式样式Pipeline并且只想触发特定分支上的构

  • 我们正在运行詹金斯2。x和爱的新管道插件。但是,由于存储库中有这么多分支,磁盘空间很快就会填满。 是否有任何与管道兼容的插件,我可以在成功构建时清除工作区?

  • 我在詹金斯有一条多分支管道。我想将我的脚本文件(jenkinsfile)作为svn文件外部包含到我的开发分支中,以便为所有分支集中组织脚本。不幸的是,多分支管道的扫描无法找到脚本文件,因为它只在声明的分支内部寻找,而不是在包含的svn外部位置。有人知道我该怎么解决这个问题吗? 下面是我的svn结构、作业配置和其他信息的示例。 SVN: branchX、branchY等的SVN外部属性。 多分支作业

  • 问题内容: 我想为每次推送触发多分支管道,有人可以让我知道如何在gitlab中为多分支管道配置Web挂钩。 问题答案: 如果您想知道触发器设置在多分支管道作业设置中的何处,将回答以下问题: 与其他作业类型不同,多分支作业配置不需要“触发器”设置。只需在GitLab中为推送请求创建一个Webhook,它指向项目的Webhook URL。 来源:https : //github.com/jenkins