使用 Jenkins 管道脚本从 Windows 到 Linux 的 SCP

SCP from Windows to Linux using Jenkins pipeline script

我想 SCP 从 Windows Jenkins 节点到 Linux 服务器。在此设置中,Windows 机器是 Jenkins 从机,我要复制的目标服务器是 Linux。

下面是我的 Jenkins 管道脚本。在下面的脚本运行之前,我正在克隆存储库,然后构建最终创建一个 .jar 文件的项目。我想将此文件复制到 Linux 服务器。

stage('SCP JAR file') {
    steps {
             bat 'scp /c/Jenkins/workspace/migration/test-project/build/libs/ssupservice-0.0.1-SNAPSHOT.jar rxp096p@server:/home/rxp096p/testing'
          }
     }
}

我的工作目录是/c/Jenkins/workspace/migration/test-project/。在给定目录中,build/libs 文件夹会在所需 .jar 文件所在的位置创建。

运行 上面的脚本给出了以下错误:

/c/Jenkins/workspace/migration/test-project/build/libs/ssupservice-0.0.1-SNAPSHOT.jar: No such file or directory

试一试:

pipeline {
    agent any

    stages {
        stage('SCP JAR file') {
            steps {
                bat '"c:\Program Files\git\usr\bin\scp.exe" -i "c:\Users\tom\.ssh\azure\id_rsa" C:\Users\tom\.jenkins\workspace\scp-to-linux\abc.jar tom@xy.xyz.xy.xz:abc.jar'
                bat '"c:\Program Files\git\usr\bin\ssh.exe" -i "c:\Users\tom\.ssh\azure\id_rsa" tom@xy.xyz.xy.xz ls -ltr'
            }
        }
    }
}

注意:在执行scp时,如果不指定目标文件名,它将在具有 完整源路径 名称的远程服务器。例如,在我的例子中,如果我没有指定此语法,它将在远程服务器上创建名称为 C:\Users\tom\.jenkins\workspace\scp-to-linux\abc.jar 的文件:tom@xy.xyz.xy.xz:abc.jar