разбитые мысли
Я просто хочу спать каждый день, когда я прихожу домой в будние дни, и я только начал писать эту статью до сих пор.Я должен сказать, что только в выходные я могу писать свой собственный код или статьи в свободное время.
предисловие
Последняя статья говорила о том, как использовать Docker для развертывания приложений, но на самом деле, в процессе автоматического развертывания, Docker не требуется. Вы можете даже создать среду на сервере самостоятельно, а затем использовать автоматический инструмент развертывания для запуска Проект развертывания. К команде. Таким образом, наличие или отсутствие докера не влияют на автоматическое развертывание, но это удобнее.
В этом сценарии я использовал Jenkins для связи с github и реализации ряда шагов для автоматизации развертывания.
Jenkins — это инструмент непрерывной интеграции (CI), написанный на языке Java, который в основном используется для непрерывной и автоматической сборки проектов.
На самом деле, вы также можете сами написать программу для замены Jenkins, но чтобы испытать удовольствие от автоматизированного развертывания раньше, я буду использовать Jenkins непосредственно здесь.
текст
Во-первых, нам нужно прояснить весь процесс
- Код загружается на github, Дженкинс обнаруживает, что код на github изменился, и загружает код.
- После загрузки кода Jenkins автоматически загружает файлы зависимостей, необходимые для проекта, и упаковывает код.
- Через Dockerfile, который мы определили ранее, выполните команду сборки docker, чтобы поместить упакованный файл в контейнер.
- Развертывание прошло успешно, и проверка доступа к порту прослушивания прошла успешно.
Теперь приступайте к созданию среды, необходимой для автоматизации.
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, настройте плагин, создайте пользователя, настройте местоположение jdk и т. д. После завершения этой серии настройка jenkins здесь приостанавливается.2. конфигурация гитхаба
После того, как jenkins настроен, нам нужно позволить jenkins обнаруживать изменения кода github, поэтому эта функция может быть достигнута только через веб-хуки.
Сначала мы идем на страницу github -> settings -> Developers -> Personal Access Token, чтобы сгенерировать пользователя с разрешениями на чтение и запись.
После выбора этих двух элементов конфигурации генерируется токен,Этот токен нужно записать, т.к. токен нельзя будет просмотреть потом, и мы будем его использовать позже.Затем создайте проект, который нам нужно развернуть, на github и войдите на страницу настроек, чтобы установить веб-хуки.
Установленный URL-адресIP+порт сервера+github-webhook.3. Дженкинс связан с github
Теперь обратно в Дженкинс, сначала мы связываем Jenkins с GitHub и настроим информацию GitHub в соответствии с этим путем: Управление системой -> системные настройки -> GitHub -> Добавить Github Server
Нажмите кнопку «Добавить» в разделе «Учетные данные» и введите следующую информацию: «Секрет» — это токен личного доступа, который мы только что сгенерировали. После его добавления мы нажимаем на тест подключения, и мы можем обнаружить, что подключение не удается, потому что через предыдущий метод установки нам нужно настроить еще одну информацию.Если мы не настроим его, последующие операции недействительны, потому что мы не можем подключиться к гитхабу. Содержимое URL-адреса хука оверлея — это адрес, который мы только что заполнили на github.(Поскольку эта проблема собиралась задолго до того, как я увидел это решение, то скриншот слишком размыт)После подключения к github мы создаем проект на jenkins и выбираем сборку проекта в свободном стиле. Затем заполните адрес проекта GitHub в целом.
Затем выберите вкладку управления исходным кодом и заполните конкретную информацию.
В этой информации о конфигурации учетные данные — это пароль учетной записи github, а ветку для обнаружения можно выбрать в ветке.После того, как вся информация настроена, приступаем к процессу настройки сборки. Выберите вкладку Build Trigger и проверьте следующее:
Чтобы выбрать среду узла здесь, вам нужно добавить плагин nodejs в jenkins. Подробнее о том, как его настроить, читайте в этой статье:jenkins устанавливает среду nodejsНаконец, мы настраиваем команду, которую jenkins автоматически создает:
В этом сценарии оболочки причина, по которой я использовал docker container stop vue-docker, заключается в том, что в случае второй сборки имя контейнера будет конфликтовать, потому что не было найдено хорошего решения, поэтому сначала остановите и удалите исходный контейнер, воссоздайте новый контейнер.4. Попробуйте построить
Когда все настроено, нажмите «Сохранить и применить». Затем мы модифицируем код и отправляем его в ветку master, проверяем страницу jenkins, проверяем очередь сборки или панель истории сборки, и вы можете увидеть процесс сборки.
Это строительная история моего проекта.Рекорд провала посередине - это процесс постоянного наступания на яму.Суммировать
На данный момент программа завершила весь процесс, но определенно в этой программе еще много недостатков, таких какМожет ли процесс сборки поместить процесс установки npm в докер для выполненияИ так далее. Конечно, есть и более зрелые подходы к решениям для автоматизированного развертывания, например, если сервер находится в облаке Alibaba или Tencent Cloud, вы можете выбрать их контейнерный сервис, который имеет более лаконичную и удобную конфигурацию и может избежать проблем в мое решение.Вам нужно удалить исходный контейнер, чтобы создать новый контейнерК сожалению, после того, как я его настроил, я узнал, что автоматическое развертывание компании использует конфигурацию Tencent Cloud, избегая такой громоздкой конфигурации.
В то же время в процессе изучения docker и jenkins я также ссылаюсь на множество замечательных статей, таких какНабор построения реальной среды разработки интерфейса + устойчивая интеграция + практика автоматизированного развертывания, Именно статьи, написанные этими предшественниками, мешают нам повторить процесс наступания на яму.
Наконец, если в статье есть недочеты, вы можете исправить их ниже :)