【问题标题】:Jenkinsfile path location "@2 converted to %402" and build is failingJenkinsfile 路径位置“@2 转换为 %402”并且构建失败
【发布时间】:2021-03-13 15:23:28
【问题描述】:

我有一份 Jenkins 工作,负责做以下事情

  1. 在某个位置(c:\jenkins\workspace\my_build)从 github 检出 Jenkinsfile
  2. Jenkinsfile 将 java 源代码签出到 (c:\jenkins\workspace\my_build@2)
  3. mvn 全新安装

当我在构建机器上运行“mvn clean install”时,它工作得非常好。

但是当我通过 Jenkisnfile 运行它时,我在构建项目时运行的单元测试用例很少,这些单元测试因 java.io.FileNotFoundException(系统找不到指定的路径)异常/错误而失败。

当我在调试模式下运行 maven(使用 -X)时,我发现工作区路径(c:\jenkins\workspace\my_build@2)正在转换为 c:\jenkins\workspace\my_build%402,因此 maven 是找不到我的单元测试用例通过所需的文件。

我该如何解决这个问题?

【问题讨论】:

  • 您好,我的回答对您有帮助吗?如果是这样,请考虑投票和/或接受。谢谢。

标签: java maven jenkins jenkins-pipeline jenkins-groovy


【解决方案1】:

我设法通过使用自定义工作区解决了这个问题。像这样的

ws("c:\jenkins\my_custom_location") {
    // git checkout
    // mvn clean install  
} 

Jenkins 在使用自定义工作区时没有使用@2 或@3 创建任何目录。

【讨论】:

    【解决方案2】:

    @user3847894,

    您没有解决问题,只是解决了问题(避免)。现在,如果您并行运行构建,它们都将使用相同的工作区,可能会产生可怕的意外后果。

    您可以尝试选择不同的符号:

    hudson.slaves.WorkspaceList
    自:1.424 默认值:
    @ 描述:当并发构建是 启用时,每个工作区都需要一个唯一的工作区目录名称 并发构建。要创建此名称,请将此标记放在 项目名称和唯一 ID,例如“我的项目@123”。

    或者找出真正的问题: 您的系统在哪里提取了错误的字符集(ANSI 与 UTF-8 ?locale)、encoding 或某些错误的“清理路径”(例如:OWASP Sanitizer)。

    您必须提供更多信息:操作系统、jdk、系统和启动参数等以进行诊断、插件列表(maven 和 Jenkins),因此无法提供更多帮助。检查控制器和代理系统信息(${JENKINS_URL}/systemInfo${JENKINS_URL}/computer/myNode/systemInfo),还可以查看 maven 在设置和 help:system 中报告的内容。靠自己;祝你好运

    【讨论】:

    • 谢谢,我会试试你的建议。我知道如果我运行并行构建它会搞砸,但我不需要运行并行构建并且为了安全我已经禁用了并行构建。
    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 2016-10-07
    • 2014-09-05
    • 2020-06-01
    • 2019-05-03
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多