在jenkins中执行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] 

任何想法我在这里做错了吗?

 Host key verification failed. 

运行jenkins的账户可能对你在~/.ssh/known_hosts.的机器的主机密钥有不好的价值~/.ssh/known_hosts.

那么我取代了know_host文件,但我仍然有问题。 所以对于任何与know_host文件有关的问题,您都可以通过执行以下操作来修复违规密钥:

 ssh-keygen -R hostnameOfOfendingKey 

这将删除结尾键,现在你的known_host文件再次工作。

现在解决另一个问题,我在其他地方find答案: 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. 

那么我做了这个testing的目的:

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

而且它没有要求input密码或任何东西。 注意我仍然是jenkins的日志。

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

我有一个类似的问题。

在我的情况下jenkins没有执行与预期用户(jenkins)的rsync,但与另一个(在我的情况下,JBoss)添加' whoami '的脚本和使用ssh verbose:

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

帮助find了问题。