Внешний интерфейс использует docker+jenkins для автоматической упаковки и развертывания.

JavaScript

предисловие

Следуя предыдущей статье, реализуйте cliЛеса проекта, чтобы завершить инициализацию проекта.

В этой статье в основном говорится о непрерывной интеграции CI/CD после завершения разработки.

Основные функции: Когда код помещается в репозиторий github, он автоматически упаковывается и развертывается на соответствующем сервере.

На самом деле этого можно добиться с помощью jenkins.

Зачем добавлять докер? Для установки Х.

Ха-ха, шучу, официальный сайт Дженкинса также рекомендует нам это сделать. Основная цельПовысьте скорость и согласованность автоматизированных задач.

установка докера

Я использую Aliyun Centos.

Перед установкой Docker Engine-Community необходимо настроить следующие зависимости:

 # 相关依赖
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  
 # 设置稳定仓库
  
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
    
# 安装docker

sudo yum install docker-ce docker-ce-cli containerd.io

При нормальных обстоятельствах, приведенные выше несколько строк команд могут установить докер, В это время вы можете передать:

docker --version

Проверьте, успешно ли установлен докер.

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

Перед тем, как спуститься, кратко расскажем об основных знаниях докера:

что делает докер

Docker можно рассматривать как легковесныйвиртуальная машина.

Вместо того, чтобы имитировать полную операционную систему, контейнеры Docker изолируют процессы. Другими словами, нанесите защитный слой на нормальный процесс. Для процесса в контейнере различные ресурсы, к которым он обращается, являются виртуальными, чтобы обеспечить изоляцию от базовой системы.

Преимущества перед виртуальными машинами:

  • начать быстро
  • Меньшее использование ресурсов
  • небольшой объем

докер состав

Полный компонент Docker:

1. DockerClient客户端
2. Docker Daemon守护进程
3. Docker Image镜像
4. DockerContainer容器

Клиент DockerClient

Docker использует архитектуру c/s (клиент-сервер). Используйте удаленный API для управления и создания контейнеров Docker, а командная строка, которую мы используем, на самом деле является клиентом Docker. Мы используем оболочку, чтобы уведомить сервер о работе контейнера докеров.

Демон Docker Daemon

Демон Docker выступает в роли сервера, который принимает запросы от клиентов и обрабатывает их (создает, запускает, распространяет контейнеры).

файл изображения изображения

Docker упаковывает приложение и его зависимости в файл образа..Только через этот файл можно сгенерировать Docker-контейнер. Файл изображения можно рассматривать как шаблон для контейнера. Docker создает экземпляр контейнера из файла образа. Один и тот же файл образа может генерировать несколько экземпляров контейнера, работающих одновременно.

Контейнер DockerContainer

Контейнер должен генерировать соответствующую среду на основе файла образа. Используйте для:

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

установка Дженкинса

Как мы знаем выше, создание контейнера докеров зависит от файла образа изображения. На официальном сайте jenkins мы можем узнать, что он рекомендует нам использовать индивидуальные продукты.jenkinsci/blueoceanчтобы сделать наш файл изображения.

Конкретные операции:

docker run \
  --rm \                   
  -u root \
  -p 8080:8080 \
  -v jenkins-data:/var/jenkins_home \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v "$HOME":/home \
  jenkinsci/blueocean

Разберите приведенную выше команду:

  • --rm: Уничтожить контейнер, когда он завершит работу.
  • -u root: уровень разрешений — root
  • -p 8080:8080: сопоставьте порт docker80 с локальным портом 80 для доступа.
  • -v jenkins-data:/var/jenkins_home: сопоставьте каталог /var/jenkins_home в контейнере с томом Docker и назовите его jenkins-data. Если том не существует, команда запуска docker автоматически создаст для вас том.
  • jenkinsci/blueocean: использовать этот файл в качестве файла образа контейнера, если нет, то docker загрузит его сам.

Не удивительно, что при доступе к вашему локальному 80 порту (не рекомендуется использовать 80 порт, скорее всего он занят, рекомендуется изменить его на менее часто используемый порт) вы можете увидеть следующую страницу:

Приведенный выше пароль находится в журнале вашей предыдущей командной строки, просто скопируйте символ перед * в две строки.

Войдите и установите плагин прямо в соответствии с рекомендациями, пока установка jenkins завершена.

Настройте интерфейсную среду упаковки и развертывания проекта.

Установите плагин:

  • публикация через ssh используется для подключения к удаленному серверу

  • Плагин Deploy to container используется для публикации упакованных приложений на удаленных серверах.

  • Плагин NodeJS не объясняет

Manage Jenkins -> Configure System

Чтобы настроить SSH для удаленного сервера:

  • Passphrase Пароль сервера

  • Путь к ключу Путь к файлу ключа удаленного сервера

  • Ключ Содержимое файла ключа

  • Имя произвольного сервера

  • HostName           IP-адрес сервера

  • Имя пользователя сервера

  • Удаленный каталог Каталог для передачи файлов

Manage Jenkins -> Global tool configuration

Настройте среду узла:

Новый проект

После завершения вышеуказанной настройки системы мы можем начать настройку нашего проекта.

новый предмет

->

свободный стиль

->

Управление исходным кодом выбирает git

->

Триггер сборки (сборка по времени, опрос SCM: установка времени, опрос изменений кода репозитория github для выполнения развертывания сборки)

Приведенное выше расписание является интервалом для настройки времени опроса.Каждые 5 минут проверяйте, не изменился ли код в репозитории github.Если есть изменение, выполните следующую команду оболочки, чтобы завершить упаковку и развертывание.

->

Среда сборки (узел)

->

построить исполняемую оболочку

cd /var/jenkins_home/workspace/mason-test #进入Jenkins工作空间下项目目录
node -v #检测node版本(此条命令非必要)
npm -v #检测npm版本(此条命令非必要)

cnpm install #安装项目中的依赖

npm run build #打包

tar -zcvf build.tar.gz build/  #压缩,方便传输,我这里打包的文件名是build

->

Действия после сборки:

Каталог исходных файлов после сборки проекта

Удалить префикс, чтобы удалить префикс

Каталог, опубликованный удаленным каталогом

Команда Exec публикует выполненную команду:

cd /root/dreamONE
tar -zxvf build.tar.gz
rm -rf build.tar.gz

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

позже

С проектными лесами:masoneast-cli,

С Docker + Jenkins полная постоянная интеграция CI / CD.

Следующим шагом является добавление внешней платформы мониторинга производительности путем обнаружения:

  • Рендеринг выше сгиба
  • стабильность страницы
  • вызовы API

После завершения базового мониторинга производительности можно сформулировать стратегию оптимизации.