jenkins 在工作终止后将 @(at 符号)添加到工作区名称

Ada*_*hon 8 jenkins jenkins-pipeline

我使用 jenkins 流水线项目来构建我的基于 OpenEmbedded 的项目。我的声明性管道的节点包含

customWorkspace "/data/jenkins/oe/"
Run Code Online (Sandbox Code Playgroud)

Jenkins 实际上构建了一个更深的目录,在

/data/jenkins/oe/project-name/
Run Code Online (Sandbox Code Playgroud)

这不是问题。但是在我在开发过程中杀死了一项工作之后,jenkins 现在在路径中添加了 at 符号,例如

/data/jenkins/oe/project-name@2/
Run Code Online (Sandbox Code Playgroud)

这会杀死 OE。

...@2如果我删除一切从目录甚至恢复/data/jenkins/oe/。我也尝试基于此错误启用并发构建,但这些都不起作用。

是什么导致了这种行为以及如何避免它?要么禁用 at 符号使用,要么禁用子目录使用?

zer*_*287 0

我们在并发构建方面也遇到了同样的问题。
我们的解决方案是使用不包含讨厌字符的自定义工作区文件夹。

这是来自的片段Jenkinsfile

// Custom workplace without nasty characters and prevent same name (master is master without nasty chars)
buildFolder = java.net.URLDecoder.decode(BRANCH_NAME, "UTF-8");
buildFolder = buildFolder + '_custom'
buildFolder = buildFolder.replaceAll("[^a-zA-Z0-9]", "_");

//The actual pipeline
pipeline {
    agent {
        node {
            label 'my pipeline'
            customWorkspace "/var/lib/jenkins/workspace/my_pipeline/${buildFolder}"
        }
    }
    // remaining steps
...
}
Run Code Online (Sandbox Code Playgroud)

在 Windows 中,自定义工作区的路径是

customWorkspace "W:\\workdir\\my_pipeline\\${buildFolder}"
Run Code Online (Sandbox Code Playgroud)

因此,它将每个非字母数字字符替换为(下划线),并在文件夹末尾_添加额外的后缀以防止名称冲突。_custom