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

Posted

技术标签:

【中文标题】使用 Jenkins 管道脚本从 Windows 到 Linux 的 SCP【英文标题】:SCP from Windows to Linux using Jenkins pipeline script 【发布时间】:2020-09-22 06:22:30 【问题描述】:

我想做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

【问题讨论】:

错误信息说文件不存在。你在这里找什么? @Kenster 我正在尝试将 .jar “ssupservice-0.0.1-SNAPSHOT.jar”复制到 linux 服务器中的测试目录。我还检查了 .jar 文件是否存在于位置中。我相信语法有问题 【参考方案1】:

试一试:

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时,如果你没有指定destination文件名,它会在远程服务器上创建一个完整源路径的文件 名称。例如,在我的情况下,如果我没有指定此语法,它将在远程服务器上创建名为 C:\Users\tom\.jenkins\workspace\scp-to-linux\abc.jar 的文件:tom@xy.xyz.xy.xz:abc.jar

【讨论】:

我试过了:管道 代理任何阶段 stage('SCP') steps bat '"C:\\Program Files\\Git\\usr\\bin\\scp.exe" -i "C:\\Live" "C:\\Windows\\System32\\config\\systemprofile\\AppData\\Local\\Jenkins\\.jenkins\\workspace\\MSDeploy\\abc.txt abc. txt' bat '"c:\\Program Files\\Git\\usr\\bin\\ssh.exe" -i "C:\Live" abc.txt ls -ltr' 但显示相同的错误'没有找到这样的目录。我正在尝试在远程服务器上“C:\Live”和“C:\Windows\\System32\\config\\systemprofile\\AppData\\Local\\Jenkins”的窗口服务器上复制文件\\.jenkins\\workspace\\MSDeploy\\" 是工作区路径。这里有什么问题?

以上是关于使用 Jenkins 管道脚本从 Windows 到 Linux 的 SCP的主要内容,如果未能解决你的问题,请参考以下文章

从 Jenkins 管道运行脚本时,如何通过 ssh 在远程 AIX 机器中加载环境变量?

如何从 Cygwin 在 Jenkins 控制台上显示 bash 脚本执行

使用 jenkins 在 Windows 远程环境 (VM) 上触发脚本

如何从 jenkins 作业的 scm 轮询中排除 jenkins 文件

如何在同一个 Jenkins 节点中加载另一个 groovy 脚本?

jenkins 管道脚本中 docker 容器的 if else 条件