I want to send files from Jenkins to to my instance in Google Compute engine instance I added a build in my config in 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
And I get this error :
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
CheckHostIP=no -o StrictHostKeyChecking=no' . login@Host:/var/www
StrictHostKeyChecking=no' . login@host:/var/www
ssh: connect to host host port 22: Connection timed out
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(601) [sender=3.0.7]
Build step 'Exécuter un script shell' marked build as failure
Finished: FAILURE
Any idea
first configure .ssh config file by (assuming you installed gcloud sdk):
gcloud compute config-ssh
It will tell you that "now you can use ssh/scp with your instances by running
ssh your-instance
your-instance is in the form of "instance.zone.project", usually.
Now you can rsync:
rsync -ave ssh your-local-dir your-instance:~/your-destination
Done.
You can mention the user if you like so:
rsync -ave ssh your-local-dir your-user@your-instance:~/your-destination
It worked for me. Juts do not forget to replace "your-instance" (and your-user) with the correct one. You can get it through "gcloud compute config-ssh" or "gcloud compute config-ssh --dry-run" or go to your cloud.google.com then compute engine then vm instances then from connect choose view gcloud command. All will show your instance name in the form of "instance.zone.project."
I hope it will help someone in future. :)
Maybe a little late, but you can use the gcloud compute ssh
command directly instead of finding the google ssh keys.
First, you have to make a script that will hide the rsync ssh command args from gcloud:
cat >./gcloud-compute-ssh <<EOF
#! /bin/sh
host="$1"
shift
exec gcloud compute ssh "$host" -- "$@"
EOF
chmod a+x ./gcloud-compute-ssh
Then you can rsync -e
to your heart's content:
rsync -e ./gcloud-compute-ssh my-dir my-instance:/my-dir
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With