проект удаленного развертывания jenkins

Jenkins

image.png
В этой статье рассказывается об использовании машины развертывания jenkins для развертывания проектов на удаленных серверах. Почему я хочу установить jenkins на отдельный сервер, во-первых, чтобы уменьшить связь между развертыванием и производственной средой, а во-вторых, для экономии затрат, вы можете построить машину для развертывания на локальном сервере

1. Установите Дженкинс

Я использую метод установки docker, шаги установки:Jenkins.IO/this/doc/book…

2. Настройте ключ ssh для образа jenkins.

Здесь предполагается, что вы успешно вошли в jenkins, и вы можете увидеть следующий интерфейс

jenkins

Хорошо, теперь мы входим в командную строку системы зеркалирования и генерируем ключ ssh.

  1. Просмотр идентификатора работающего в данный момент изображения
$ docker ps

docker ps
2. Войдите в командную строку изображения

docker exec -it 你的镜像ID /bin/bash

bash
Как видите, вошел в зеркальный баш 3. Сгенерируйте SSH-ключи

Вот почему нужно настроить ssh, чтобы вы могли лучше использовать git и без пароля для входа на удаленный сервер без паролей

$ cd /root/.ssh
$ ssh-keygen -t rsa -C 你邮箱
$ cat id_rsa.pub

После последней команды вы можете увидеть эту строку ключей

cat id_rsa.pub

Далее идем на github и к сервис-провайдеру сервера, который нужно подключить удаленно (типа Conscience Cloud, Routine Cloud) для настройки ssh, больше не буду говорить об этом хламе, я маринованная рыба

3. Настройте хук jenkins на github

  1. в основной интерфейс系统管理
    image.png
  2. введите системные настройки
    image.png
  3. Потяните вниз, вы можете увидеть область конфигурации github, где плагин github автоматически устанавливается во время начальной инициализации, если нет, его можно установить в плагинеGitHub plugin
    image.png
    После нажатия учетных данныхAddкнопку, добавьте учетные данные, которые являются паролем учетной записи, после этого щелкните тест подключения, и он будет успешным
    image.png
    连接成功
  4. Затем нажмите нижеAdvance
    image.png
    Выберите, чтобы сгенерировать хук
    image.png
  5. Настроить хуки под проект github
    image.png
    image.png
    image.png

4. Создайте новую задачу

image.png
image.png
image.png
Построить триггер хука выбора триггера
image.png
Выбор метода сборкиshell
image.png
Заполните оболочку и сохраните ее

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. Наконец-то можно протестировать, отлично

image.png

7. Подведите итоги

Вроде нормально, хотя другими хорошими фичами дженкинса не пользуюсь, но та, что мне подходит, лучшая Автоматизированные развертывания, которые были испытаны до сих пор, включают

  • github + docker + dockerhub
  • github + docker + daocloud
  • github + jenkins + ssh
  • gitlab runner

Раньше я думал, что daocloud удобен, но теперь я использую jenkins для разработки, это зависит от моего личного вкуса.