簡體   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