使用 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 文件