Синхронизировать в 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 ответов:
Первая настройка .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
в случае, если сервер изменился и теперь имеет другой ключ.