jenkins 多分支管道作业的分支名称中包含斜杠时出现问题

yzxexxkh  于 2022-11-28  发布在  Jenkins
关注(0)|答案(1)|浏览(264)

关于分支名称中带有斜杠的多分支管道的各种问题,已经有很多stackoverflow问题。(最新的Jenkins+插件和配置文件提供程序插件)。不过,我想得到一些澄清。我试着查看源代码,但我迷路了,因为管道插件过去被称为工作流插件,而现在源代码项目被称为工作流聚合器(我想)但是当我看到这个插件时,我不明白它是如何与插件列表中的其他插件相关联/包括在内的。以下是我的观察结果(如果这很重要的话,我在Windows上):
1.以前Jenkins会在文件夹名称中使用三个字符% 2F来代替分支中的/。
1.然后将其更改为_而不是%2F
1.现在它回到了% 2F(包含所有最新的插件)
我的问题是:
1.是否有任何地方记录了为什么恢复%2F?
1.有人能告诉我哪个插件和什么版本最后使用_而不是% 2F,因为这是造成我的悲伤,我想解决这个问题?
1.有没有什么代码可以让我用现有的最新插件来配置这个行为?我看过这个post,但是它没有给我提供一个声明性管道的例子,也没有用SVN作为SCM。声明性管道的问题是,这篇文章中的代码要求你禁用声明性SCM checkout 步骤(使用skipDefaultCheckout()选项),并且我不知道如何配置分支文件夹路径名。我不希望在Jenkins文件中指定远程URL,而希望在Jenkins作业配置中指定。
任何帮助都是真诚的感谢

2vuwiymt

2vuwiymt1#

您的第三个问题有答案。
有没有一些代码可以让我用现有的最新插件来配置这个行为?
我们的想法是,获取BRANCH_NAME内置变量,并替换所有非字母数字字符的内容。稍后,使用此文件夹而不是默认工作区。
在Jenkins的文件中:

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}"
        }
    }
    ...
}

相关问题