1. Установите Дженкинс
Я использую метод установки docker, шаги установки:Jenkins.IO/this/doc/book…
2. Настройте ключ ssh для образа jenkins.
Здесь предполагается, что вы успешно вошли в jenkins, и вы можете увидеть следующий интерфейс
Хорошо, теперь мы входим в командную строку системы зеркалирования и генерируем ключ ssh.
- Просмотр идентификатора работающего в данный момент изображения
$ docker ps
2. Войдите в командную строку изображения
docker exec -it 你的镜像ID /bin/bash
Как видите, вошел в зеркальный баш
3. Сгенерируйте SSH-ключи
Вот почему нужно настроить ssh, чтобы вы могли лучше использовать git и без пароля для входа на удаленный сервер без паролей
$ cd /root/.ssh
$ ssh-keygen -t rsa -C 你邮箱
$ cat id_rsa.pub
После последней команды вы можете увидеть эту строку ключей
Далее идем на 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 для разработки, это зависит от моего личного вкуса.