我正在学习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,并且有许多可用的更新。我将等待一段时间并执行完整更新并再次尝试,以防它修复任何问题。
答案 0 :(得分:1)
我发现问题是因为我的文件夹名称中有一个引号。一旦我删除了单引号,它就完美地运行了。这也链接到这个Jenkins问题[https://issues.jenkins-ci.org/browse/JENKINS-44341]我在其中添加了评论并投票支持修复。
所以解决方法是,只使用文件夹和作业名称[0-9a-zA-Z_-]中的以下字符,不包括方括号,也不要使用空格。
我可以确认在文件夹配置的“显示名称”字段中使用特殊字符和空格可以正常工作。