Руководство по развертыванию на виртуальной машине Linux с помощью Jenkins и Azure DevOps Services

Непрерывная интеграция (CI) и непрерывное развертывание (CD) представляют собой конвейер, с помощью которого можно выполнить сборку, выпустить и развернуть свой код. Azure DevOps Services предоставляет полнофункциональный набор инструментов для автоматизации CI и CD для развертывания в Azure. Jenkins — это популярный сторонний серверный инструмент CI и CD стороннего поставщика, который также обеспечивает автоматизацию этих процессов. Вы можете использовать Azure DevOps Services и Jenkins вместе, чтобы настроить способ доставки своего облачного приложения или службы.

В этом руководстве для создания веб-приложения Node.js используется Jenkins. Затем вы развернете его с помощью DevOps

в группе развертывания, состоящей из виртуальных машин Linux. Узнайте следующие темы:

  • Получение примера приложения.
  • Настройка подключаемых модулей Jenkins.
  • Настройка универсального проекта Jenkins для Node.js.
  • Настройка Jenkins для интеграции с Azure DevOps Services.
  • Создание конечной точки службы Jenkins.
  • Создание группы развертывания для виртуальных машин Azure.
  • Создайте конвейер выпуска в Azure Pipelines.
  • Выполнение развертывания вручную и с помощью непрерывной интеграции.

Необходимые компоненты

Получение примера приложения

Развертываемое приложение должно храниться в репозитории Git. В данном руководстве мы рекомендуем использовать этот пример приложения с сайта GitHub. В этом руководстве содержится пример сценария, который использовался во время установки Node.js и приложения. Если нужно работать с собственным репозиторием, следует настроить такой же образец.

Создайте вилку этого приложения и запишите расположение (URL-адрес), чтобы использовать его позже в данном руководстве. Дополнительные сведения см. в статье Fork a repo (Создание вилки репозитория).

Примечание.

Приложение было создано с помощью Yeoman. Оно использует Express, Bower и Grunt. У него также есть некоторые пакеты npm в качестве зависимостей. Кроме того, пример содержит сценарий, который устанавливает Nginx и развертывает приложение. Он выполняется на виртуальных машинах. В частности, сценарий выполняет следующее:

  1. Устанавливает Node, Nginx и PM2.
  2. Настраивает Nginx и PM2.
  3. Запускает приложения Node.

Настройка подключаемых модулей Jenkins

Сначала необходимо настроить два подключаемых модуля Jenkins: NodeJS и непрерывное развертывание VS Team Services.

  1. Откройте учетную запись Jenkins и выберите Manage Jenkins (Управление Jenkins).
  2. На странице Manage Jenkins (Управление Jenkins) выберите Manage Plugins (Управление подключаемыми модулями).
  3. Отфильтруйте список, чтобы найти подключаемый модуль NodeJS, и выберите параметр Install without restart (Установить без перезагрузки). Adding the NodeJS plug-in to Jenkins
  4. Отфильтруйте список, чтобы найти подключаемый модуль Непрерывное развертывание VS Team Services, и выберите параметр Install without restart (Установить без перезагрузки).
  5. Вернитесь к панели мониторинга Jenkins и выберите Manage Jenkins (Управление Jenkins).
  6. Выберите глобальную конфигурацию средства. Найдите NodeJS и выберите NodeJS installations (Установки NodeJS).
  7. Выберите параметр Install automatically (Автоматическая установка), а затем введите значение имени.
  8. Выберите Сохранить.

Настройка универсального проекта Jenkins для Node.js

  1. Выберите New Item (Создать элемент). Введите имя элемента.
  2. Выберите Freestyle project (Универсальный проект). Нажмите ОК.
  3. На вкладке Source Code Management (Управление исходным кодом) выберите Git и введите сведения о репозитории и ветви, содержащей код приложения.
    Add a repo to your build
  4. На вкладке Build Triggers (Триггеры сборки) выберите Poll SCM (Опрос SCM) и введите расписание H/03 * * * * для опроса репозитория Git на наличие изменений каждые три минуты.
  5. На вкладке "Среда сборки" выберите "Предоставить узел" и "путь к папке npm" и выберите значение установки NodeJS. Для параметра npmrc file (NPMRC-файл) оставьте значение use system default (Использовать системное значение по умолчанию).
  6. На вкладке Build (Сборка) выберите оболочку выполнения и введите команду npm install, чтобы обновить все зависимости.

Настройка Jenkins для интеграции с Azure DevOps Services.

Примечание.

Убедитесь, что используемый для следующих шагов личный маркер доступа (PAT) включает в себя разрешение выпуска (чтение, запись, выполнение и управление) в Azure DevOps Services.

  1. Создайте личный маркер доступа в организации Azure DevOps Services, если у вас его нет. Эти данные требуются Jenkins для доступа к организации Azure DevOps Services. Убедитесь, что данные маркера безопасности для будущих шагов хранятся в этом разделе.

    Чтобы узнать, как создать такой маркер, прочтите статью Authenticate access with personal access tokens for Azure DevOps Services and TFS (Аутентификация доступа с помощью личных маркеров доступа для Azure DevOps и TFS).

  2. На вкладке Post-build Actions (Действия после сборки) выберите Add post-build action (Добавить действие после сборки). Выберите Archive the artifacts (Архивировать артефакты).

  3. Для Files to archive (Файлы для архивации) введите **/*, чтобы включить в архив все файлы.

  4. Чтобы создать другое действие, выберите Add post-build action (Добавить действие после сборки).

  5. Выберите Trigger release in TFS/Team Services (Активация выпуска в TFS и Team Services). Введите URI для организации Azure DevOps Services в формате https://{имя_организации}.visualstudio.com.

  6. Введите Имя проекта.

  7. Выберите имя конвейера выпуска. (Позже вы создадите этот конвейер выпуска в службах Azure DevOps).

  8. Выберите учетные данные для подключения к среде Azure DevOps Services или Azure DevOps Server:

    • Оставьте пустым поле Имя пользователя, если вы используете Azure DevOps Services.
    • Если вы используете локальную версию Azure DevOps Server, введите имя пользователя и пароль.
      Configuring Jenkins post-build actions
  9. Сохраните проект Jenkins.

Создание конечной точки службы Jenkins

Конечная точка службы позволяет Azure DevOps Services подключаться к Jenkins.

  1. Откройте страницу Службы в Azure DevOps Services, затем откройте список Новая конечная точка службы и выберите Jenkins. Add a Jenkins endpoint
  2. Введите имя для подключения.
  3. Введите URL-адрес сервера Jenkins и выберите параметр Принимать ненадежные SSL-сертификаты. Пример URL-адреса — http://{URL_адрес_сервера_Jenkins}.westcentralus.cloudapp.azure.com.
  4. Введите имя пользователя и пароль для учетной записи Jenkins.
  5. Выберите Проверить подключение, чтобы проверить правильность указанных данных.
  6. Нажмите кнопку ОК, чтобы создать конечную точку службы.

Создание группы развертывания для виртуальных машин Azure

Для регистрации агента Azure DevOps Services требуется группа развертывания, чтобы развернуть конвейер выпуска на виртуальной машине. Группы развертывания позволяют легко определить логические группы целевых компьютеров для развертывания и установить требуемый агент на каждом компьютере.

Примечание.

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

  1. Откройте вкладку "Выпуски " в центре сборки и выпуска , откройте группы развертывания и нажмите кнопку "+ Создать".
  2. Введите имя группы развертывания и необязательное описание. Затем выберите Создать.
  3. Выберите операционную систему для целевой виртуальной машины развертывания, Например, выберите Ubuntu 16.04+.
  4. Выберите Использовать личный маркер доступа в сценарии для проверки подлинности.
  5. Выберите ссылку Необходимые компоненты системы. Установите необходимые компоненты для операционной системы.
  6. Чтобы скопировать сценарий, выберите Скопировать сценарий в буфер обмена.
  7. Войдите в целевую виртуальную машину развертывания и выполните этот сценарий. Не запускайте сценарий с привилегиями sudo.
  8. После установки вам будет предложено ввести теги группы развертывания. Примите значения по умолчанию.
  9. В Azure DevOps Services проверьте недавно зарегистрированную виртуальную машину в разделе Целевые объекты области Группы развертываний.

Создайте конвейер выпуска в Azure Pipelines.

Конвейер выпуска задает процесс, выполняемый Azure Pipelines для развертывания приложения. В этом примере выполняется сценарий оболочки.

Чтобы создать конвейер выпуска в Azure Pipelines, выполните следующее.

  1. Откройте вкладку "Выпуски " центра сборки и выпуска и выберите " Создать конвейер выпуска".
  2. Выберите шаблон Empty (Пустой), выбрав команду, позволяющую начать работу с пустого процесса.
  3. В разделе Артефакты щелкните + Add Artifact (+ Добавить артефакт) и выберите Jenkins в качестве типа источника. Выберите подключение к конечной точке службы Jenkins. Затем выберите исходное задание Jenkins и щелкните Добавить.
  4. Щелкните многоточие рядом с пунктом Среда 1. Выберите Этап добавления группы развертывания.
  5. Выберите группу развертывания.
  6. Выберите +, чтобы добавить задачу для этапа развертывания группы.
  7. Выберите задачу Сценарий оболочки и щелкните Добавить. Задача Сценарий оболочки предоставляет конфигурацию для сценария, выполняемого на каждом сервере для установки Node.js и запуска приложения.
  8. В качестве пути сценария введите $(System.DefaultWorkingDirectory)/Fabrikam-Node/deployscript.sh.
  9. Выберите Дополнительно, а затем включите параметр Указать рабочий каталог.
  10. В качестве рабочей папки введите $(System.DefaultWorkingDirectory)/Fabrikam-Node.
  11. Измените имя конвейера выпуска, указав имя, введенное на вкладке Post-build Actions (Действия после сборки) для сборки в Jenkins. Jenkins необходимо это имя, чтобы активировать новый выпуск при обновлении исходных артефактов.
  12. Щелкните Сохранить и ОК, чтобы сохранить конвейер выпуска.

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

  1. Щелкните + Release (+ Выпуск) и выберите Создать выпуск.
  2. Щелкните созданную сборку в выделенном раскрывающемся списке и выберите Очередь.
  3. Перейдите по ссылке на выпуск во всплывающем сообщении. Пример: Создан выпуск Release-1.
  4. Откройте вкладку Журналы, чтобы просмотреть выходные данные консоли для выпуска.
  5. Откройте в браузере URL-адрес одного из серверов, добавленных в группу развертывания. Например, введите http://{IP-адрес_вашего_сервера}.
  6. Перейдите в исходный репозиторий Git и измените содержимое заголовка h1 в файле app/views/index.jade, заменив его текст.
  7. Зафиксируйте изменения.
  8. Через несколько минут вы увидите созданный выпуск на странице Выпуски для Azure DevOps. Откройте этот выпуск, чтобы увидеть, как выполняется развертывание. Поздравляем!

Устранение неполадок подключаемого модуля Jenkins

Если вы столкнулись с ошибками, которые касаются подключаемых модулей Jenkins, сообщите о проблеме с конкретным компонентом в Jenkins JIRA.

Следующие шаги

В этом руководстве вы автоматизировали развертывание приложения в Azure, настроив Jenkins для сборки и Azure DevOps Services для выпуска. Вы научились выполнять следующие задачи:

  • Выполнение сборки приложения в Jenkins.
  • Настройка Jenkins для интеграции с Azure DevOps Services.
  • Создание группы развертывания для виртуальных машин Azure.
  • Создание конвейера Azure для настройки виртуальных машин и развертывания приложения.

Дополнительные сведения об использовании Azure Pipelines на этапах сборки выпуска см. здесь.

Сведения о том, как создать конвейер CI/CD на основе YAML для развертывания на виртуальных машинах, см. в следующем руководстве.