名称中带有斜线的分支的多分支管道作业的问题

mar*_*rio 6 jenkins jenkins-plugins jenkins-pipeline

关于与分支名称中带有斜杠的多分支管道相关的各种问题,有很多 stackoverflow 问题。我什至为我的特定情况创建了一个 Jenkins JIRA(最新的 Jenkins + 插件和配置文件提供程序插件)。不过,我想得到一些澄清。我尝试查看源代码但我迷路了,因为管道插件曾经被称为工作流插件,现在源代码项目被称为工作流聚合器(我认为)但是当我查看这个插件时,我无法理解它是如何关联的/include 插件列表中的其他插件。这是我的观察(如果重要的话,我在 Windows 上):

  1. 过去,Jenkins 会在文件夹名称中使用三个字符 %2F 代替分支中的 / 。
  2. 然后将其更改为 _ 而不是 %2F
  3. 现在它回到 %2F(带有所有最新插件)

所以这里是我的问题:

  1. 有没有记录为什么 %2F 被重新设置?
  2. 有人可以指出我上次使用哪个插件和哪个版本 _ 而不是 %2F 因为这让我感到悲伤,我想解决这个问题吗?
  3. 是否有一些代码可以用于使用现有的最新插件配置此行为?我看到了这篇文章,但它没有为我提供声明性管道和 SVN 作为 SCM 的示例。声明式管道的问题在于,这篇文章中的代码要求您禁用声明式 SCM 签出步骤(使用 skipDefaultCheckout() 选项),而我不知道如何配置分支文件夹路径名。我不希望在 Jenkins 文件中指定远程 URL,而是在 Jenkins 作业配置中指定。

任何帮助真的很感激

zer*_*287 1

你的第三个问题已经有了答案。

我可以使用一些代码来使用现有的最新插件配置此行为吗?

这个想法是,获取BRANCH_NAME内置变量,并替换所有不是字母数字字符的内容。稍后,使用此文件夹代替默认工作区。

在詹金斯文件中:

buildFolder = java.net.URLDecoder.decode(BRANCH_NAME, "UTF-8");

// Replace nasty chars
buildFolder = buildFolder.replaceAll("[^a-zA-Z0-9]", "_");

pipeline {
    agent {
        node {
            label 'my_project'
            customWorkspace "W:\\workdir\\${buildFolder}"
            // or customWorkspace "/var/lib/jenkins/workspace/${buildFolder}"
        }
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)