2017-09-05 72 views
1

我试图在jenkins中添加构建步骤以将文件从构建服务器复制到我的Web应用程序服务器。我有以下命令在命令提示工作通过jenkins传递密码构建步骤

sudo scp -r /var/lib/jenkins/workspace/demoproj/publish [email protected]:/usr/temp 

但是当我运行此命令,它会提示我每次都输入密码。我发现了关于sshpass,但是当我运行这个命令时...

sudo sshpass -p "passwordhere" scp -r /var/lib/jenkins/workspace/demoproj/pub [email protected]:/usr/temp 

终端卡住了。永远不会通过。

我的主要问题是如果我将第一个命令添加到jenkins中的构建步骤中,它将无法通过密码。我怎么能在jenkins中提供密码,或者修改命令来传递我的凭据?

有用的信息:我使用Windows 10腻子连接到从其他的Ubuntu 16.04.3服务器我 的Ubuntu 16.04.3 LTS x64服​​务器。

+0

你可以让我们知道Jenkins的环境细节以及你试图从哪台机器上执行scp – Suresh

回答

0

如果您需要在附近每次输入密码,CI有什么意义?安装“通过ssh发布”插件,它有一个通过ssh发送内容的步骤。
https://wiki.jenkins.io/display/JENKINS/Publish+Over+SSH+Plugin
看看“在构建期间使用SSH”部分,您可以使用“通过SSH发送文件或执行命令”构建步骤。这将在插件安装后变得可用。

1

首先,sshpass需要安装在运行jenkins实例的系统以及试图访问的系统上:[email protected]。您可以通过执行'哪个sshpass'或'whereis sshpass'来验证它。如果它甚至没有安装在其中一个,那么你需要先安装它。

另外,你有没有试过对上述机器做一个ssh:[email protected]从你有jenkins实例的系统中?如果不是,那么任何一个系统的“已知主机”中都可能没有条目。为此,您可以使用'-o StrictHostKeyChecking = no'选项在已知主机中进行自动输入。

另外,如果你不想一次又一次地输入密码,你应该使用'钥匙'。为两个系统生成一个唯一的密钥,并使用-i选项执行scp或ssh。

您应该使用jenkins凭据,而不是直接在脚本中使用敏感密码。将整个scp或ssh部分放在一个看起来像:withCredentials(){}的块中。

相关问题