В этой статье рассказывается об использовании машины развертывания jenkins для развертывания проектов на удаленных серверах.
Почему я хочу установить jenkins на отдельный сервер, во-первых, чтобы уменьшить связь между развертыванием и производственной средой, а во-вторых, для экономии затрат, вы можете построить машину для развертывания на локальном сервере
После последней команды вы можете увидеть эту строку ключей
Далее идем на github и к сервис-провайдеру сервера, который нужно подключить удаленно (типа Conscience Cloud, Routine Cloud) для настройки ssh, больше не буду говорить об этом хламе, я маринованная рыба
3. Настройте хук jenkins на github
в основной интерфейс系统管理
введите системные настройки
Потяните вниз, вы можете увидеть область конфигурации github, где плагин github автоматически устанавливается во время начальной инициализации, если нет, его можно установить в плагинеGitHub pluginПосле нажатия учетных данныхAddкнопку, добавьте учетные данные, которые являются паролем учетной записи, после этого щелкните тест подключения, и он будет успешным
Затем нажмите нижеAdvanceВыберите, чтобы сгенерировать хук
Настроить хуки под проект github
4. Создайте новую задачу
Построить триггер хука выбора триггераВыбор метода сборкиshellЗаполните оболочку и сохраните ее
5. Теперь подробно разберем оболочку
#!/bin/sh
ssh -tt 远程服务器用户名@远程服务器ip << remotessh
cd /home/tlgc_server_api
/bin/git pull
npm run stop
npm run start
exit
remotessh
Первое предложение, указывающее, что это сценарий оболочки
Второе предложение, чтобы не допустить ошибокPseudo-terminal will not be allocated because stdin is not a terminal.так дайsshплюс-ttпараметры, чтобы иметь возможность выполнить команду на удаленной машине, нужно<< remotessh, Обратите внимание, что последние два предложения используются для выхода из удаленной машины, иначе задача не будет завершена.
Четвертое предложение, которое нужно использовать здесьgitполный путь, прежде чем писатьcronтакже встречается, когда выполнитьbash, Необходимо использовать/bin/bash, выполнить здесьgitкоманда, также требуется полный путь/bin/git, я использовал его прошлой ночьюgit, а потом не добавил последние два предложения, чтобы закончить лечение, задача застряла там, застряла на одну ночь...
6. Наконец-то можно протестировать, отлично
7. Подведите итоги
Вроде нормально, хотя другими хорошими фичами дженкинса не пользуюсь, но та, что мне подходит, лучшая
Автоматизированные развертывания, которые были испытаны до сих пор, включают
github + docker + dockerhub
github + docker + daocloud
github + jenkins + ssh
gitlab runner
Раньше я думал, что daocloud удобен, но теперь я использую jenkins для разработки, это зависит от моего личного вкуса.