Jenkins:由于位置地址中有一个额外的"%402"字符而导致的失败

Dan*_*iel 4 continuous-integration jenkins

我的运行失败,我认为由于位置地址中存在这个可疑字符"%402".当我通过终端检查文件夹名称时,此文件夹名称不存在,而它出现在Jenkins日志中.我想知道有没有类似的经历.

以下是错误日志中的代码段:

Results :

Tests in error: 
  testMultiThreading(edu.illinois.cs.cogcomp.edison.annotators.SimpleGazetteerAnnotatorTest): java.io.FileNotFoundException: /home/mangipu2/.jenkins/workspace/cogcomp-nlp%402/edison/target/classes/testgazetteers/names (No such file or directory)
  testAddView(edu.illinois.cs.cogcomp.edison.annotators.SimpleGazetteerAnnotatorTest): java.io.FileNotFoundException: /home/mangipu2/.jenkins/workspace/cogcomp-nlp%402/edison/target/classes/testgazetteers/names (No such file or directory)
  testSimpleGazetteerAnnotatorString(edu.illinois.cs.cogcomp.edison.annotators.SimpleGazetteerAnnotatorTest): java.io.FileNotFoundException: /home/mangipu2/.jenkins/workspace/cogcomp-nlp%402/edison/target/classes/testgazetteers/names (No such file or directory)
  testNonLazy(edu.illinois.cs.cogcomp.edison.annotators.AnnotatorLazyInitTest): java.io.FileNotFoundException: /home/mangipu2/.jenkins/workspace/cogcomp-nlp%402/edison/target/classes/testgazetteers/names (No such file or directory)
  testLazy(edu.illinois.cs.cogcomp.edison.annotators.AnnotatorLazyInitTest): java.io.FileNotFoundException: /home/mangipu2/.jenkins/workspace/cogcomp-nlp%402/edison/target/classes/testgazetteers/names (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

和完整的错误日志:http://morgoth.cs.illinois.edu:8080/job /cogcomp-nlp/74/console

Mat*_*eta 7

编辑:帖子完全重写了解决方案.

当您在Jenkinsfile中使用"ws"指令时,Jenkins会创建多个工作空间文件夹来执行并发构建:

  • jobName _ branch - generated_key @ 2
  • jobName _ branch - generated_key @ 2 @ tmp
  • jobName _ branch - generated_key @script

您可以在此线程上获得更多信息.

特殊字符"@"的十六进制代码是"%40",因此您看到的额外字符实际上是带有编码"@"的"@ 2"后缀.

我已经分析了Jenkins的源代码,并且看到你可以覆盖用于构建后缀的默认字符"@".

要解决此问题,您只需在启动Jenkins服务器时添加系统属性"-Dhudson.slaves.WorkspaceList = $ {new_character}".

以下是从系统加载属性的代码行.