предисловие
До появления программного обеспечения, связанного с CI&CD, как мы завершали развертывание кода? Вручную перейдите на сервер, чтобы создать каталог, упаковать и сжать локально, загрузить scp в указанный каталог сервера и вручную распаковать пакет, например, серию утомительных шагов, которые столь же свирепы, как тигры. Изменение знака препинания - кропотливая операция, и если в какой-то ссылке возникает ошибка, то проблема долго не может быть локализована.Тестовая среда неплохая.Если развернуть онлайн, то можно себе представить, сколько хлопот будет привести с последствиями. Времена меняются, и мы добились прогресса. Люди стремились сделать наш процесс создания кода простым, эффективным и надежным. Jenkins — хорошее изобретение.
Что такое Дженкинс?
- Jenkins - это программное обеспечение с открытым исходным кодом CI & CD, используемое для автоматизации различных задач, включая программное обеспечение для создания, тестирования и развертывания.
- Jenkins поддерживает различные среды выполнения либо через системные пакеты, Docker, либо через отдельную программу Java.
блок-схема:
Функции, которые будут реализованы позже
- функция git-хука
- автоматическое развертывание вебхука
- Развернуть рассылку
- Информация о развертывании отправляется группе скоб через робота скоб и уведомляет соответствующий персонал.
Предварительная подготовка
- Облачный сервер (вы также можете использовать свой собственный компьютер, если у вас есть доступ к внешней сети)
- Основные команды Linux
- основные команды git
- nginx
- jenkins
- гитхаб проект
Установка и запуск Дженкинса
установить Java
Jenkins использует Java, и если в вашей системе он не установлен, вам необходимо сначала установить Java.
yum install java
Проверить версию java
java -version
Если отображается следующая информация, установка прошла успешно.
openjdk version "1.8.0_161"
OpenJDK Runtime Environment (build 1.8.0_161-b14)
OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode)
Установить Дженкинс
Получите библиотеку зависимостей jenkins
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key
Просмотр каталога установки Jenkins
rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins
Посмотреть порт Дженкинса
cat /etc/sysconfig/jenkins | more
Порт Jenkins по умолчанию — 8080. Если вы используете облачный хост для установки jenkins, вам нужно перейти нагруппа безопасности консолиДобавьте порт доступа 8080 здесь, я использую порт по умолчанию для доступа сюда.
Начать Дженкинс
sysctemctl start jenkins
Посетите Дженкинс
Откройте браузер и введите ip:8080, следующий интерфейс:
Посмотреть пароль
cat /var/lib/jenkins/secrets/initialAdminPassword
Выберите установку пользовательских плагинов
Установка плагина (установка плагина инициализации немного медленная, занимает около 20 минут)
Завести аккаунт
После сохранения переходим на следующую страницу, нажимаем готово
Создать задачу
- дайте название задаче
функция git-хука
желаемый результат: после успешной отправки локального кода на github jenkins автоматически начинает сборку и развертывание.
думать: Как jenkins узнает, что мы отправили код в репозиторий github?
- Откройте только что созданную задачу, добавьте адрес удаленного хранилища github и настройте имя пользователя и пароль.
2. Установите общий подключаемый модуль триггера Webhook.
Управление системой -> Управление плагинами -> фильтр (дополнительный плагин)
3. Добавьте триггеры
Этот плагин можно настроить в соответствии с вашими потребностями.Например, если я отправляю код ветки test1, мне нужно выполнить модульные тесты, а затем собрать и объединить его с другой веткой test2. Когда я коммичу код ветки master, работает только деплоймент и сборка, и больше ничего. Когда я выбираю здесь по умолчанию, код основной ветки отправляется и развертывается автоматически.
4. Конфигурация репозитория GitHub
обработать
- Настройте адрес веб-перехватчика Jenkins на GitHub.
- Создайте токен доступа на GitHub и используйте этот токен доступа для аутентификации, когда Jenkins выполняет некоторые операции, требующие разрешений;
- Дженкинс устанавливает плагин GitHub;
- Дженкинс настраивает доступ к GitHub;
- URL-адрес - это IP-адрес, начатый jenkins
- Выберите тип контента application/json
- Secret добавляет пароль к крючку для jenkins
5. Тестовые хуки
Код локального push-теста
jenkins запускает автоматическую сборку
Сборка выполнена успешно, рабочая область проверена, обновление кода развертывания выполнено успешно.
Дженкинс завершает статическую упаковку
Обычно мы все еще упакованы на местном режиме с помощью сценария NPM, а затем с помощью плагина WebPack, чтобы завершить пакет. Таким образом, мы крючком по локальному Git Push-адреса однажды сработав, Дженкинс - как добиться серии процессов нашей локальной упаковки.
Есть три общих шага:
- npm install
- npm run test
- npm run build
- Прежде всего, как и при локальном запуске скрипта npm, если мы хотим выполнять команды npm в jenkins, мы должны сначала настроить среду узла в jenkins, Мы можем ввести узел, настроив переменные среды, или установить плагины, которые используются здесь В качестве плагинов установите плагин nvm wrapper.
2. В среде сборки в конфигурации проверьте следующееRun the build in an NVM managed environment, управлять нашей версией ноды через nvm, тут я выбираюv10.16.0Версия
3. Добавьте оболочку сборки
порядок выполнения оболочки
- установить зеркало npm, здесь я выбираю зеркало taobao, вы также можете выбрать официальное зеркало npm
- npm установить установить зависимости
- Выполнить сборку npm run для упаковки
4. Выполните локальный push, и jenkins автоматически выполнит скрипт для сборки статики.
Удаленное автоматическое развертывание серверов через SSH
- Сначала установите плагин Publish Over SSH на Jenkins, мы будем использовать этот инструмент для реализации функции развертывания сервера.
- Создайте папку на сервере, где вы хотите развернуть код для получения кода от Jenkins.Я создал папку Jenkins на сервере.
- Дженкинс хочет развернуть код на сервере, должен войти на сервер.Существует два метода проверки входа.Один из них – проверка SSH.Один – проверка пароля, точно так же, как вы входите на свой сервер, вы можете использовать SSH бесплатно для входа в систему. также можете входить в систему каждый раз, когда вы теряете свой пароль, и вы найдете это для публикации через SSH в управлении системой - настройки системы.
Описание основных параметров:
Passphrase:密码(key的密码,没设置就是空)
Path to key:key文件(私钥)的路径
Key:将私钥复制到这个框中(path to key和key写一个即可)
SSH Servers的配置:
SSH Server Name:标识的名字(随便你取什么)
Hostname:需要连接ssh的主机名或ip地址(建议ip)
Username:用户名
Remote Directory:远程目录(上面第二步建的testjenkins文件夹的路径)
4. Добавьте две команды упаковки для вышеуказанных шагов и упакуйте каталог dist, сгенерированный на сервере jenkins, в сжатый пакет, цель которого — загрузить его в каталог Jenkins, который мы создали на сервере.
cd dist
tar -zcvf dist.tar.gz *
5. Щелкните операцию после сборки, добавьте шаги операции после сборки и выберите отправку искусственной сборки через SSH.
Name:选择一个你配好的ssh服务器
Source files :写你要传输的文件路径
Remove prefix :要去掉的前缀,不写远程服务器的目录结构将和Source files写的一致
Remote directory :写你要部署在远程服务器的那个目录地址下,不写就是SSH Servers配置里默认远程目录
Exec command :传输完了要执行的命令,我这里执行了解压缩和解压缩完成后删除压缩包2个命令
6. Мы модифицируем тестовый код локально, а затем нажимаем.В это время, после того, как jenkins завершит автоматическую упаковку, мы идем во вновь созданный каталог Jenkins на сервере, чтобы проверить и обнаружить, что каталог сервера был обновлен до последний, а затем передайте доменное имя.доступОбнаружено, что только что измененный локально код вступил в силу.
На данный момент мы завершили весь автоматизированный процесс создания и развертывания с помощью webhook, github, SSh и jenkins.
Электронная почта после сборки
Когда мы сталкиваемся со сбоем конструкции или ненормальным прекращением строительства во время вышеуказанного процесса строительства, будучи студентом-разработчиком или тестировщиком, мы хотим своевременно знать результаты каждого строительства.Что нам делать?
Здесь я использую более индивидуальныйExtended E-mail NotificationПлагин, мне нужно установить этот плагин перед его использованием и перезапустить jenkins после завершения.
1. Управление системой -> Конфигурация системы -> Расширенное уведомление по электронной почте, вы должны настроить его перед настройкой здесьJenkins LocationАдрес электронной почты системного администратора, в противном случае отправка электронной почты не будет работать. Кроме того, здесь есть небольшая яма. Заполненный почтовый ящик должен сначала подтвердить, открыта ли служба SMTP или нет. Если он не открыт, электронная почта не может быть отправлена! ! !
2. Откройте созданныйwebapck4-constructЗадачи, добавить действия после сборки в конфигурацию
3. Мы снова инициируем git push локально.После того, как jenkins автоматически завершит создание и развертывание, он автоматически отправит электронное письмо на наш почтовый ящик.
Здесь я использую собственный формат электронной почты. Официальный формат электронной почты слишком прост, чтобы находить и создавать проблемы.
Отправляйте сообщения о сборке в такие группы, как DingTalk.
1. Создайте группу в DingTalk и добавьте робота
2. Получите пользовательский Robot WebHook
3. УстановкаdingTalkплагин
4. Откройте задачу сборки в общей конфигурации.
Введите лицо, уведомляющее, и содержание уведомления также можно настроить.
5. Создайте тест на успех
конец
1. С помощью приведенного выше небольшого случая мы просто реализовали набор автоматизированных рабочих процессов построения.Пока git push инициируется локально, облачный сервер может реализовать автоматическое построение и развертывание, а результаты развертывания также могут быть отправлены по электронной почте, Робот DingTalk и т. д. Инструменты, облегчающие наши операции развертывания.
2. Наш реальный рабочий сценарий намного сложнее, чем вышеупомянутые случаи множественного CL, CL, конечно, является более сложным процессом, пока мы понимаем и понимаем основную концепцию Дженкинса, я считаю, что пока более мучительно, больше думать,Everything will become simple.
3. Jenkins также имеет много мощных функций, таких как Pipeline, slave и некоторые неожиданные плагины. Позже я попытаюсь выполнить более сложные сценарии CL, написав сценарии Pipeline.