Изучение интерфейсных решений для автоматизированного развертывания (2): статьи Jenkins

Jenkins

разбитые мысли


Я просто хочу спать каждый день, когда я прихожу домой в будние дни, и я только начал писать эту статью до сих пор.Я должен сказать, что только в выходные я могу писать свой собственный код или статьи в свободное время.

предисловие


Последняя статья говорила о том, как использовать Docker для развертывания приложений, но на самом деле, в процессе автоматического развертывания, Docker не требуется. Вы можете даже создать среду на сервере самостоятельно, а затем использовать автоматический инструмент развертывания для запуска Проект развертывания. К команде. Таким образом, наличие или отсутствие докера не влияют на автоматическое развертывание, но это удобнее.

В этом сценарии я использовал Jenkins для связи с github и реализации ряда шагов для автоматизации развертывания.

Jenkins — это инструмент непрерывной интеграции (CI), написанный на языке Java, который в основном используется для непрерывной и автоматической сборки проектов.

На самом деле, вы также можете сами написать программу для замены Jenkins, но чтобы испытать удовольствие от автоматизированного развертывания раньше, я буду использовать Jenkins непосредственно здесь.

текст


Во-первых, нам нужно прояснить весь процесс

  1. Код загружается на github, Дженкинс обнаруживает, что код на github изменился, и загружает код.
  2. После загрузки кода Jenkins автоматически загружает файлы зависимостей, необходимые для проекта, и упаковывает код.
  3. Через Dockerfile, который мы определили ранее, выполните команду сборки docker, чтобы поместить упакованный файл в контейнер.
  4. Развертывание прошло успешно, и проверка доступа к порту прослушивания прошла успешно.

Теперь приступайте к созданию среды, необходимой для автоматизации.

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

Сначала установите jdk, потому что jenkins работает на основе jdk. Если у вас уже есть jdk, вы можете пропустить этот шаг.

$ sudo apt update
$ sudo apt install openjdk-8-jdk

Затем добавьте репозиторий jenkins, здесь я использую систему ubuntu, поэтому добавляется репозиторий debian, сначала добавьте ключ.

$ wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -

затем добавьте этот репозиторий

$ sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'

Как только ключ и репозиторий будут добавлены, пришло время загрузить Jenkins.

$ sudo apt update
$ sudo apt install jenkins

После успешной загрузки используйте эту команду, чтобы определить, прошла ли загрузка jenkins успешно и работает ли она нормально.

$ systemctl status jenkins

В это время мы можем войти на страницу jenkins, обратившись к порту сервера 8080. Если он не может быть открыт, мы можем проверить, открыт ли порт 8080.

jenkins登录界面
Затем выполните инициализацию в соответствии с руководством jenkins: введите пароль, сгенерированный jenkins, настройте плагин, создайте пользователя, настройте местоположение jdk и т. д. После завершения этой серии настройка jenkins здесь приостанавливается.

2. конфигурация гитхаба

После того, как jenkins настроен, нам нужно позволить jenkins обнаруживать изменения кода github, поэтому эта функция может быть достигнута только через веб-хуки.

Сначала мы идем на страницу github -> settings -> Developers -> Personal Access Token, чтобы сгенерировать пользователя с разрешениями на чтение и запись.

github配置页面
После выбора этих двух элементов конфигурации генерируется токен,Этот токен нужно записать, т.к. токен нельзя будет просмотреть потом, и мы будем его использовать позже.

Затем создайте проект, который нам нужно развернуть, на github и войдите на страницу настроек, чтобы установить веб-хуки.

GitHub webhooks
Установленный URL-адресIP+порт сервера+github-webhook.

3. Дженкинс связан с github

Теперь обратно в Дженкинс, сначала мы связываем Jenkins с GitHub и настроим информацию GitHub в соответствии с этим путем: Управление системой -> системные настройки -> GitHub -> Добавить Github Server

jenkins与github配置
Нажмите кнопку «Добавить» в разделе «Учетные данные» и введите следующую информацию: «Секрет» — это токен личного доступа, который мы только что сгенерировали.

凭据信息
После его добавления мы нажимаем на тест подключения, и мы можем обнаружить, что подключение не удается, потому что через предыдущий метод установки нам нужно настроить еще одну информацию.Если мы не настроим его, последующие операции недействительны, потому что мы не можем подключиться к гитхабу.

重要的配置
Содержимое URL-адреса хука оверлея — это адрес, который мы только что заполнили на github.(Поскольку эта проблема собиралась задолго до того, как я увидел это решение, то скриншот слишком размыт)

После подключения к github мы создаем проект на jenkins и выбираем сборку проекта в свободном стиле. Затем заполните адрес проекта GitHub в целом.

general配置

Затем выберите вкладку управления исходным кодом и заполните конкретную информацию.

源码管理月面
В этой информации о конфигурации учетные данные — это пароль учетной записи github, а ветку для обнаружения можно выбрать в ветке.

После того, как вся информация настроена, приступаем к процессу настройки сборки. Выберите вкладку Build Trigger и проверьте следующее:

触发器配置
触发器配置
Чтобы выбрать среду узла здесь, вам нужно добавить плагин nodejs в jenkins. Подробнее о том, как его настроить, читайте в этой статье:jenkins устанавливает среду nodejs

Наконец, мы настраиваем команду, которую jenkins автоматически создает:

构建命令
В этом сценарии оболочки причина, по которой я использовал docker container stop vue-docker, заключается в том, что в случае второй сборки имя контейнера будет конфликтовать, потому что не было найдено хорошего решения, поэтому сначала остановите и удалите исходный контейнер, воссоздайте новый контейнер.

4. Попробуйте построить

Когда все настроено, нажмите «Сохранить и применить». Затем мы модифицируем код и отправляем его в ветку master, проверяем страницу jenkins, проверяем очередь сборки или панель истории сборки, и вы можете увидеть процесс сборки.

构建历史
Это строительная история моего проекта.Рекорд провала посередине - это процесс постоянного наступания на яму.

Суммировать

На данный момент программа завершила весь процесс, но определенно в этой программе еще много недостатков, таких какМожет ли процесс сборки поместить процесс установки npm в докер для выполненияИ так далее. Конечно, есть и более зрелые подходы к решениям для автоматизированного развертывания, например, если сервер находится в облаке Alibaba или Tencent Cloud, вы можете выбрать их контейнерный сервис, который имеет более лаконичную и удобную конфигурацию и может избежать проблем в мое решение.Вам нужно удалить исходный контейнер, чтобы создать новый контейнерК сожалению, после того, как я его настроил, я узнал, что автоматическое развертывание компании использует конфигурацию Tencent Cloud, избегая такой громоздкой конфигурации.

В то же время в процессе изучения docker и jenkins я также ссылаюсь на множество замечательных статей, таких какНабор построения реальной среды разработки интерфейса + устойчивая интеграция + практика автоматизированного развертывания, Именно статьи, написанные этими предшественниками, мешают нам повторить процесс наступания на яму.

Наконец, если в статье есть недочеты, вы можете исправить их ниже :)