Синхронизировать в Google вычислительный экземпляр двигатель от Дженкинс


Я хочу отправить файлы из 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 CheckHostIP=no -o StrictHostKeyChecking=no' . login@Host:/var/www

StrictHostKeyChecking=нет' . login@host:/var/www ssh: подключение к хосту порт хоста 22: Время ожидания соединения истекло rsync: соединение неожиданно закрыто (0 байт получено до сих пор) [отправитель] ошибка rsync: необъяснимая ошибка (код 255) в io.c (601) [отправитель=3.0.7] Этап построения 'Exécuter сценарий ООН Шелл помечено построение как сбой Закончено: неудача

Любая идея

5 4

5 ответов:

Первая настройка .ssh config file by (предполагая, что вы установили gcloud sdk):

gcloud compute config-ssh

Он скажет вам ,что " теперь вы можете использовать ssh/scp с вашими экземплярами, запустив

ssh your-instance

Ваш-экземпляр находится в форме " экземпляр.зона.проект", как правило.

Теперь вы можете rsync:

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

Готово.

Вы можете упомянуть пользователя, если вам так нравится:

rsync -ave ssh your-local-dir your-user@your-instance:~/your-destination

Это сработало для меня. Выступает не забудьте заменить "ваш экземпляр" (и пользователя) с правильным один. Вы можете сделать это через "gcloud вычислить конфигурации-СШ" или "gcloud вычислить конфиг-СШ --сухого хода" или пойти в cloud.google.com вычислите двигателя, то ВМ экземпляров, то от подключения выбрать вид команды gcloud. Все покажет ваше имя экземпляра в виде "экземпляр.зона.проект."

Я надеюсь, что это поможет кому-то в будущем. :)

Ваша команда rsync выше использует опцию-i для ssh. Параметр аргумента to-i должен указывать путь к файлу ключа ssh, а не каталог, в котором находится файл ключа.

Проблема была с моим открытым ключом, поэтому для решения проблемы вам нужно :

1-Настройка ключей ssh: выполнить

gcloud compute ssh example-instance

2-СР ваш .СШ/google_compute_engine.содержимое паба в GCE VM authorized_key

3-перезапустить экземпляр виртуальной машины

Спасибо за помощь

Может быть, немного поздно, но вы можете использовать команду gcloud compute ssh непосредственно вместо поиска ключей Google ssh.

Во-первых, вы должны сделать скрипт, который будет скрывать rsync ssh команду args от gcloud:

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

chmod a+x ./gcloud-compute-ssh

Тогда вы можете rsync -e сколько душе угодно:

rsync -e ./gcloud-compute-ssh my-dir my-instance:/my-dir

Как упоминалось в " Как решить ошибку rsync: ошибка в потоке данных протокола rsync (код 12) при вводе-выводе.c (600) on windows ", проверьте, какой ssh действительно используется, и совместима ли эта версия ssh с версией из rsync.

Указание абсолютного пути для исполняемого файла ssh может помочь:

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

Этот поток также предлагает очистить ~/.ssh/know_hosts в случае, если сервер изменился и теперь имеет другой ключ.