繁体   English   中英

Jenkins 管道中的 Shell 脚本 cd 命令给出错误“没有这样的文件或目录”

[英]Shell script cd command in Jenkins pipeline is giving error "no such file or directory"

我有一个用于文件传输作业的 Jenkins 管道脚本,我正在尝试从服务器读取 CSV 文件 (FileTransferCSV.csv) 并相应地执行操作。 在读取 CSV 文件后的脚本块下,“scp”命令将文件从 Jenkins 服务器复制到实际测试传输工作正常,但“cd”到目标服务器出现错误

无此文件或目录

下面是 Jenkins 管道脚本的一部分:

stage('Parsing the CSV and Transferring Files')
{
     steps {
        script {
            readFile("${WORKSPACE}/archives/TEST/FileTransferCSV.csv").split('\n').each { line  ->
                if (!line.contains("Action,Source Path,File Name,Destination Path"))
                {
                    def fields = line.split(',')
                    for(String item: fields) {
                        println item
                    }

                    if (fields[0].equals("UPDATE") || fields[0].equals("INSERT"))
                    {
                        if (fields[1] == null || fields[1].isEmpty())
                        {
                            sh (script :  "scp -r ${WORKSPACE}/archives/TEST/${fields[2]} asapuser@${ASAP_IP}:${SERVER_PATH}/${fields[3]} " , returnStdout: true).trim();
                            echo "------------Files copied to Target server--------------"
                        }
                        else
                        {
                            sh (script : "scp -r ${WORKSPACE}/archives/TEST/${fields[1]}/${fields[2]} asapuser@${ASAP_IP}:${SERVER_PATH}/${fields[3]} " , returnStdout: true).trim();
                            echo "------------Files copied to Target server--------------"
                        }
                    }

                    if (fields[0] == "DELETE")
                    {
                        sh (script : "#!/bin/bash",returnStdout: true).trim();
                        sh (script : "cd asapuser@${ASAP_IP}:${SERVER_PATH}/ZDP/${fields[3]}",returnStdout: true).trim();
                        sh (script : "rm -r asapuser@${ASAP_IP}:${fields[2]}",returnStdout: true).trim();
                        echo "------------Files deleted from Target server--------------"
                    }

                }
            }
        }
    }
}
                              

对于“删除”操作,目标路径和文件名正确填充,但出现错误“没有这样的文件或目录”。 我已经使用相同的命令从终端检查了文件位置并且它正在工作。

下面是管道的输出:

[Pipeline] { (Parsing the CSV and Transferring Files)
[Pipeline] script
[Pipeline] {
[Pipeline] readFile
[Pipeline] echo
23:16:46  UPDATE
[Pipeline] echo
23:16:46  ONENDS
[Pipeline] echo
23:16:46  MODIFY_HLR_ADD_PRIMARY.xml
[Pipeline] echo
23:16:47  property_files/ONENDS
[Pipeline] sh
23:16:47  + scp -r /home/tomcat/.jenkins/workspace/ASAP_PROPERTY_FILES_DEPLOY_PIPELINE/archives/TEST/ONENDS/MODIFY_HLR_ADD_PRIMARY.xml asapuser@10.162.53.18:/opt/asap/asap/property_files/ONENDS
[Pipeline] echo
23:16:59  ------------Files copied to Target server--------------
[Pipeline] echo
23:17:11  INSERT
[Pipeline] echo
23:17:11  
[Pipeline] echo
23:17:12  NEW
[Pipeline] echo
23:17:12  property_files
[Pipeline] sh
23:17:12  + scp -r /home/tomcat/.jenkins/workspace/ASAP_PROPERTY_FILES_DEPLOY_PIPELINE/archives/TEST/NEW asapuser@10.162.53.18:/opt/asap/asap/property_files
[Pipeline] echo
23:17:24  ------------Files copied to Target server--------------
[Pipeline] echo
23:17:49  DELETE
[Pipeline] echo
23:17:49  
[Pipeline] echo
23:17:49  DUMMY
[Pipeline] echo
23:17:49  NEW_DUMMY
[Pipeline] sh
23:08:43  + cd asapuser@10.162.53.18:/opt/asap/asap/ZDP/NEW_DUMMY
23:08:43  /home/tomcat/.jenkins/workspace/ASAP_PROPERTY_FILES_DEPLOY_PIPELINE@tmp/durable-568d025c/script.sh: line 1: cd: asapuser@10.162.53.18:/opt/asap/asap/ZDP/NEW_DUMMY: No such file or directory
[Pipeline] }
[Pipeline] // script

下面是 CSV 文件:

Action,Source Path,File Name,Destination Path
UPDATE,ONENDS,MODIFY_HLR_ADD_PRIMARY.xml,property_files/ONENDS
INSERT,,NEW,property_files
DELETE,,DUMMY,NEW_DUMMY

您不能cd进入服务器。 这不是命令的工作方式。 我不知道为什么它会在你的本地 shell 中工作,也许你已经安装了一些插件(这在 zsh 或类似的 shell 中是可行的)。

您可以将node块(假设服务器是 Jenkins 节点)与dir块结合使用以移动到正确的目录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM