由于正在创建@tmp路径,Jenkins管道作业找不到脚本

Ale*_*lex 14 git bash groovy jenkins

我正在编写一个管道作业,它将调用另一个脚本来执行.Jenkins文件和脚本存在于同一目录中,但作业无法找到要运行的脚本.

这是脚本的相关部分;

stage ('Update') {
    try {
        dir('jenkins/pipeline/update-jenkins-plugins-ppln') {
            sh 'ls -l'
            sh 'update-plugins.sh'
        }
}
Run Code Online (Sandbox Code Playgroud)

返回以下错误;

[update-jenkins-plugins-ppln] Running shell script
+ ls -l
total 8
-rw-r--r-- 1 jenkins jenkins 2441 Dec 20 09:34 Jenkinsfile
-rwxr-xr-x 1 jenkins jenkins  506 Dec 19 14:06 update-plugins.sh
[Pipeline] sh
[update-jenkins-plugins-ppln] Running shell script
+ update-plugins.sh
/var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/update-jenkins-plugins-ppln@tmp/durable-11cefdd0/script.sh: 2: /var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/update-jenkins-plugins-ppln@tmp/durable-11cefdd0/script.sh: update-plugins.sh: not found
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在使用的路径是正确的,因为根据ls我需要的文件update-plugins.sh位于我已经修改过的目录中.但出于某种原因,当实际搜索脚本时,Jenkins正在添加@tmp/durable-8d48734f/script.sh到路径上.

各种故障排除

  • 我读到你必须再次检查分支,即使你已经检查出来获取Jenkinsfile,所以我是.
  • 我已经进入Jenkins框进行检查,是的,脚本就在那里.

为什么Jenkins添加@tmp位,有没有办法防止这种行为?

izz*_*kil 3

我猜你的 pwd 不在 PATH 中,所以你必须这样调用它:sh './update-plugins.sh'