在詹金斯中执行 RSYNC 命令

在詹金斯中执行 RSYNC 命令

我正在尝试将代码部署到远程服务器。到目前为止,我尝试过

  • 通过 SSH 插件发布:问题是我无法保留文件权限
  • rsync 命令:这会保留文件权限,但问题是我不知道如何设置密码才能让它自动运行

这是我得到的:

[JenkinsBuild] $ /bin/sh -xe /var/lib/jenkins/tmp/hudson4646064064846581974.sh
+ rsync -PSauve ssh --exclude=JenkinsBuild app bower.json config gruntfile.js karma.conf.js LICENSE.md Makefile node_modules package.json Procfile protractor.conf.js public README README.md server.js [email protected]:/srv/dp/prod
Host key verification failed.
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(600) [sender=3.0.6]

知道我在这里做错了什么吗?

答案1

Host key verification failed.

运行 jenkins 的帐户可能具有错误值的主机密钥,用于您正在 ssh 连接的机器~/.ssh/known_hosts.

答案2

好吧,我替换了 know_host 文件,但问题仍然存在。因此,对于任何遇到 know_host 文件问题的人,您可以通过执行以下操作来修复有问题的密钥:

ssh-keygen -R hostnameOfOfendingKey

这将删除有问题的密钥,现在你的known_host文件可以再次工作了。

现在,为了解决另一个问题,我在另一个地方找到了答案:https://stackoverflow.com/questions/25755418/executing-rsync-in-jenkins/25770519#25770519

这就是我解决这个问题的方法

sudo su jenkins -s /bin/bash

然后以 jenkins 用户身份将我的 ssh 密钥复制到我想要连接/执行命令的服务器,等等

ssh-copy-id [email protected]

然后它会向你展示这个

[email protected]'s password: 
Now try logging into the machine, with "ssh '[email protected]'", and check in:

  .ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

然后我为了测试目的这样做了:

bash-4.1$ rsync -PSauve ssh --exclude=JenkinsBuild /srv/pd/* [email protected]:/srv/pdc/test1  

并且它无需输入密码或任何其他操作即可通过。请注意,我仍然以 jenkins 身份登录。

所以现在,当我使用一些 shell 命令作为构建的一部分创建 Jenkins 作业时,它将按预期工作:D

答案3

我遇到了类似的问题。

在我的例子中,jenkins 没有与预期用户(jenkins)执行 rsync,而是与另一个用户(在我的例子中是 jboss)whoami在脚本中添加“ ”并使用 ssh verbose:

rsync -e "ssh -v" .......

帮助发现问题。

相关内容