为什么 Jenkins 在workspace@script 文件夹中创建一个子文件夹来签出git 代码而不是workspace@script 本身?

Wan*_*igh 6 jenkins jenkins-groovy jenkins-pipeline

这是在我更新了一些插件并将“蓝海”添加到我们的 Jenkins 后发生的。

我们的每项工作都是使用 JenkinsFile 来构建和打包我们的应用程序。

但是我们正在从文件夹中加载一些 groovy 文件到 git 中workspace@script,所以这就是我所做的:

script {
    slack = load WORKSPACE + "@script/jenkins/libs/toto.groovy"
}
Run Code Online (Sandbox Code Playgroud)

但现在我必须这样做才能拥有正确的文件夹:

script {
    // Locate the jenkins folder
    // This is done because there is a new sub-folder (like : 17a4ba1ed1ce777b18c5...)
    // that appeared out of nowhere (update -> security ??)
    git_jenkins_folder = sh (
        script: "find " + WORKSPACE + "@script -type d -name 'jenkins' -printf '%T@ %Tc %p\n' | sort -rn | head -1 | cut -d' ' -f9",
        returnStdout: true
    ).trim()
    // Load the groovy methods in groovy files
    slack = load git_jenkins_folder + "/libs/toto.groovy"
}
Run Code Online (Sandbox Code Playgroud)

当然,我必须从workspace@script文件夹中删除之前签出的代码才能使其正常工作。

为什么突然发生这样的事?我在考虑可能进行安全更新吗?

如果这个数字将来发生变化并出现新文件夹怎么办?

恕我直言,这真的很奇怪,但也许我错过了一些东西。如果有人有答案,我会很乐意阅读:)

编辑 :

感谢@1141514admin,这样做是为了解决“Pipeline: Groovy”插件的这些问题:

编辑2:

添加了对上次修改的文件夹的检索,以防该文件夹名称将来发生更改。

114*_*min 3

我今天也在我的构建中注意到了这种新行为。我之前更新了一些插件。我发现在我的服务器上,“Pipeline: Groovy”插件版本 2656.vf7a_e7b_75a_457 导致这些新子文件夹具有冗长的随机名称,其中包含克隆的存储库文件。对我来说,问题是它导致构建失败,导致文件路径超过 260 个字符,这是 Windows 中的默认限制。我将“Pipeline: Groovy”插件降级到版本 2648.va9433432b33c,重新启动 Jenkins 服务后,我在工作区构建文件夹中不再看到这些新的随机命名的子文件夹。

听起来这是一个永久性的改变。

https://www.jenkins.io/security/advisory/2022-02-15/

管道:Groovy 插件 2656.vf7a_e7b_75a_457 在读取管道的脚本文件(通常是 Jenkinsfile)时,对每个 SCM 使用不同的签出目录。