Jenkins管道sh步失败

时间:2017-06-20 14:22:56

标签: linux jenkins

我正在学习Jenkins Pipelines,我正在尝试在Linux构建服务器上执行任何操作,但是我因为无法创建文件夹而遇到错误。

这是管道代码

node('server') { 
    stage("Build-Release-Linux64-${NODE_NAME}") {   
        def ws = pwd()
        sh "ls -lha ${ws}"
    }
}

这是我得到的错误:

sh: 1: cannot create /opt/perforce/workspace/Dels-Testing-Area/MyStream-main@tmp/durable-07c26e68/pid; jsc=durable-8c9234a2eb6c2feded950bac03c8147a;JENKINS_SERVER_COOKIE=$jsc /opt/perforce/workspace/Dels-Testing-Area/MyStream-main@tmp/durable-07c26e68/script.sh: Directory nonexistent

我在运行时检查了服务器,我发现它确实创建了 文件“/opt/perforce/workspace/Dels-Testing-Area/MyStream-main@tmp/durable-07c26e68/script.sh”

该文件包含以下内容,由Jenkins而非我自己创建:

#!/bin/sh -xe

我尝试使用sh步执行什么并不重要,我得到了同样的错误。

有人能说清楚为什么会这样吗?

- = UPDATE = -

我目前正在使用Jenkins 2.46.2 LTS,并且有许多可用的更新。我将等待一段时间并执行完整更新并再次尝试,以防它修复任何问题。

1 个答案:

答案 0 :(得分:1)

我发现问题是因为我的文件夹名称中有一个引号。一旦我删除了单引号,它就完美地运行了。这也链接到这个Jenkins问题[https://issues.jenkins-ci.org/browse/JENKINS-44341]我在其中添加了评论并投票支持修复。

所以解决方法是,只使用文件夹和作业名称[0-9a-zA-Z_-]中的以下字符,不包括方括号,也不要使用空格。

我可以确认在文件夹配置的“显示名称”字段中使用特殊字符和空格可以正常工作。