Выполнение команды RSYNC в Jenkins
Я пытаюсь развернуть свой код на удаленном сервере. Пока я пробовал
- Публикация через плагин 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 john@192.168.2.10:/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]
Есть идеи, что я здесь делаю не так?
3 ответа
Ну, я заменил файлы know_host, но у меня все еще были проблемы. поэтому для любого, у кого есть проблемы с файлом know_host, вы должны исправить поврежденный ключ, выполнив:
ssh-keygen -R hostnameOfOfendingKey
и это удалит окончательный ключ, и теперь ваш файл known_host снова работает.
СЕЙЧАС, чтобы решить другую проблему, я нашел ответ в этом другом месте: https://stackoverflow.com/questions/25755418/executing-rsync-in-jenkins/25770519
и это было то, что я сделал, чтобы решить это
sudo su jenkins -s /bin/bash
затем, как пользователь jenkins, скопируйте мой ключ ssh на сервер, к которому я хочу подключить / выполнить команды и т. д.
ssh-copy-id myuser@TheRemoteserver.com
тогда он представит вам это
myuser@TheRemoteserver.com's password:
Now try logging into the machine, with "ssh 'myuser@TheRemoteserver.com'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Затем я сделал это в целях тестирования:
bash-4.1$ rsync -PSauve ssh --exclude=JenkinsBuild /srv/pd/* myuser@TheRemoteserver.com:/srv/pdc/test1
и прошло без запроса пароля или чего-либо еще. Обратите внимание, что я все еще вхожу как Дженкинс.
Так что теперь, когда я создал задание Jenkins с некоторыми командами оболочки как часть сборки, он будет работать как положено:D
Host key verification failed.
Учетная запись, в которой запущен jenkins, вероятно, имеет неверное значение для ключа хоста для компьютера, на котором вы используете sshing ~/.ssh/known_hosts.
У меня была похожая проблема.
В моем случае jenkins выполнял не rsync с ожидаемым пользователем (jenkins), а с другим (jboss в моем случае), добавляющим 'whoami
'к сценарию и используя ssh verbose:
rsync -e "ssh -v" .......
помог найти проблему.