Git 从Jenkins到Google计算引擎实例的Rsync

Git 从Jenkins到Google计算引擎实例的Rsync,git,jenkins,bitbucket,rsync,google-compute-engine,Git,Jenkins,Bitbucket,Rsync,Google Compute Engine,我想将文件从Jenkins发送到Google Compute engine实例中的我的实例我在Jenkins的配置中添加了一个构建: rsync -vrzhe "ssh -i /var/lib/jenkins/.ssh/google_compute_engine -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no" . login@Host:/var/www 我得到了这个错误: Checki

我想将文件从Jenkins发送到Google Compute engine实例中的我的实例我在Jenkins的配置中添加了一个构建:

rsync -vrzhe "ssh -i /var/lib/jenkins/.ssh/google_compute_engine -o UserKnownHostsFile=/dev/null -o CheckHostIP=no -o StrictHostKeyChecking=no" . login@Host:/var/www
我得到了这个错误:

Checking out Revision 59cf9dd819fe2168c4c40f716707d58b2b99e251 (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 59cf9dd819fe2168c4c40f716707d58b2b99e251
> git rev-list 59cf9dd819fe2168c4c40f716707d58b2b99e251 # timeout=10
[Platform] $ /bin/sh -xe /tmp/hudson4502433356962914860.sh
+ rsync -vrzhe 'ssh -i /var/lib/jenkins/.ssh -o UserKnownHostsFile=/dev/null -o 


上面的rsync命令使用ssh的-i选项。-i选项的参数应该是ssh密钥文件的路径,而不是密钥文件所在的目录。

如“”中所述,请检查实际使用的ssh版本,以及该ssh版本是否与rsync中的版本兼容

为ssh可执行文件指定绝对路径有助于:

rsync -e /usr/bin/ssh .... 

还建议清除
~/.ssh/know_hosts
,以防服务器已更改并且现在具有不同的密钥。

问题在于我的公钥,因此要解决此问题,您需要:

1-设置ssh密钥:运行

gcloud compute ssh example-instance
2-将您的.ssh/google_compute_engine.pub内容保存到GCE VM authorized_密钥中

3-重新启动VM实例


感谢您的帮助

可能有点晚了,但是您可以直接使用
gcloud compute ssh
命令,而不是查找google ssh密钥

首先,您必须创建一个脚本,该脚本将对gcloud隐藏rsync ssh命令args:

cat >./gcloud-compute-ssh <<EOF
#! /bin/sh
host="$1"
shift
exec gcloud compute ssh "$host" -- "$@"
EOF

chmod a+x ./gcloud-compute-ssh

首先通过以下方式配置.ssh配置文件(假设您安装了gcloud sdk):

它将告诉您“现在您可以通过运行

ssh your-instance
您的实例通常以“instance.zone.project”的形式出现

现在您可以rsync:

rsync -ave ssh your-local-dir your-instance:~/your-destination
完成了

如果愿意,您可以提及用户:

rsync -ave ssh your-local-dir your-user@your-instance:~/your-destination
这对我来说很有效。但是不要忘记用正确的实例替换“你的实例”(和你的用户)。 您可以通过“gcloud compute config ssh”或“gcloud compute config ssh--dry run”获取它,或者访问您的cloud.google.com,然后是计算引擎,然后是虚拟机实例,然后从连接选择查看gcloud命令。所有这些都将以“instance.zone.project”的形式显示您的实例名称


我希望这会对将来的人有所帮助。:)

当然,我应该是文件的路径,我将编辑我的帖子,但这并不能解决我的问题problem@RjaibiMejdi你使用的是什么操作系统?你使用的是什么版本的rsync和ssh?Ubuntu服务器到Ubuntu服务器/OpenSSH_5.5p1/rsync版本3.0.7协议版本30I是指什么确切的com完整的版本号?uname-a返回什么?rsync-v返回什么?Linux ns61740.ovh.net 3.2.13-grsec-xxxx-grs-ipv6-64#1 SMP-Thu-Mar 29 09:48:59 UTC 2012 x86_64 GNU/LinuxOk,我在回答中提到的线程似乎暗示了rsync和ssh的某些版本之间的潜在不兼容,因此我提出了我的上一个问题。至少你没有正如我最初担心的那样,rsync和ssh之间没有任何不兼容之处。+1您自己尝试过吗?它对我不起作用。当然!您可以用终端日志描述一下什么不起作用吗?很抱歉,在我的.ssh文件中稍作修改后,它就开始起作用了。谢谢。您也可以提到
-z
标志,它可以加快速度通过在大多数工作流中启用压缩来实现这一点。不要忘记在服务器上安装rsync!
sudo apt get install rsync
。否则它将无法工作。如果使用默认的debian映像,则不会安装它。
ssh your-instance
rsync -ave ssh your-local-dir your-instance:~/your-destination
rsync -ave ssh your-local-dir your-user@your-instance:~/your-destination