我有一个非常基础的library(data.table)
setDT(new_df)[, paste(inmethod[inerror==min(inerror)], collapse=", "), by=.(intype)]
,它构建了一个Jenkins pipeline
项目,并将工件部署到一个Java
实例。
构建部分可以正常工作,但是部署无法正常工作,并给出与EC2
相关的错误。
我将scp
中存在的整个scp
命令复制粘贴到Jenkinsfile
命令提示符下,以查看是否可行,并成功通过jar复制到Windows
实例,它确实起作用。
不确定为什么无法通过ec2
工作。
Jenkinsfile
Jenkins
Windows命令提示符:
pipeline {
agent any
tools {
maven "Maven3"
}
stages {
stage('Build and Deploy') {
steps {
script {
def os = System.properties['os.name'].toLowerCase()
echo "OS: ${os}"
if (os.contains("linux")) {
sh "mvn clean install -DskipTests"
} else {
bat "mvn clean install -DskipTests"
bat "scp -i C:\\Users\\Nital\\.ssh\\LightsailDefaultKey-us-east-1.pem target\\helloworld-rest-app.jar ec2-user@35.175.125.176:/home/ec2-user/app-deploys"
}
}
}
post {
success {
echo 'Build and Deploy - SUCCESS'
}
}
}
}
}
Jenkins错误日志:
C:\Users\Nital>scp
usage: scp [-346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program] source ... target
答案 0 :(得分:0)
在执行诸如scp等的任何命令之前添加此行。
PATH=/sbin:/usr/sbin:/usr/bin:/usr/local/bin
答案 1 :(得分:0)
这是因为可执行文件位于Windows System32目录中,并且由于安全方面的原因,无法从脚本访问该可执行文件。如果您将ssh
和scp
可执行文件复制到Windows目录之外,然后将新目录放入您的路径,则它应该可以工作。
答案 2 :(得分:-1)
如果您需要在Windows上scp
,那么为什么不简单地使用pscp
来实现呢?
安装PuTTY,其中还包括PSCP(适用于Windows的SCP)。
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
请为您的计算机(32位或64位)选择最新版本的MSI(“ Windows安装程序”)
如果要在Java程序中使用它,请参见以下示例:http://www.jcraft.com/jsch/examples/ScpFrom.java.html
答案 3 :(得分:-1)
用于在两个Linux / Unix计算机系统之间安全传输文件的Scp命令
scp命令的语法为:
scp [options] username1@source_host:directory1/filename1 username2@destination_host:directory2/filename2
并为了在Windows中使用scp命令,请使用pscp:
pscp c:\documents\info.txt userid@server.example.com:/tmp/foo/info.txt
请检查关节
https://it.cornell.edu/managed-servers/transfer-files-using-putty