Развертывание на виртуальной машине Linux
Azure DevOps Services | Azure DevOps Server 2022 г. | Azure DevOps Server 2020 г.
Узнайте, как настроить конвейер Azure DevOps для развертываний с несколькими виртуальными машинами, которые используют среду и ресурсы виртуальной машины.
Используйте инструкции в этой статье для любого приложения, которое публикует пакет веб-развертывания.
Предварительные требования
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно.
- Активная организация Azure DevOps. Регистрация в Azure Pipelines
- Виртуальная машина Linux, размещенная в Azure.
- Чтобы установить приложение JavaScript или Node.js, настройте виртуальную машину Linux с помощью Nginx в Azure, см. статью Создание виртуальной машины Linux с помощью Azure CLI.
- Чтобы развернуть приложения на основе Java Spring Boot и Spring Cloud, создайте виртуальную машину Linux в Azure с помощью шаблона Java 13 в Ubuntu 20.04 , который предоставляет полностью поддерживаемую среду выполнения на основе OpenJDK.
Получение примера кода
Если у вас уже есть приложение в GitHub, которое вы хотите развернуть, можно создать конвейер для этого кода.
Если вы новый пользователь, создайте вилку этого репозитория в GitHub:
https://github.com/MicrosoftDocs/pipelines-javascript
Создание среды с виртуальными машинами
Вы можете добавлять виртуальные машины в качестве ресурсов в средах и использовать их для развертываний с несколькими виртуальными машинами. Представление журнала развертывания обеспечивает возможность трассировки от виртуальной машины до фиксации.
Войдите в организацию Azure DevOps и перейдите к проекту.
Перейдите на страницу Конвейеры и выберите Среды>Создать среду.
Введите имя среды (обязательно) и описание (при желании).
Выберите Виртуальные машины в качестве ресурса для добавления в среду, а затем нажмите кнопку Далее.
Выберите Linux в поле Операционная система и скопируйте скрипт регистрации.
Запустите сценарий регистрации на каждой из целевых виртуальных машин, зарегистрированных в среде.
Примечание
- Личный маркер доступа (PAT) вошедшего пользователя предварительно вставляется в скрипт и истекает через три часа.
- Если на виртуальной машине уже есть агент, укажите уникальное имя для регистрации в среде.
После регистрации виртуальная машина начнет отображаться как ресурс среды в разделе Ресурсы.
Чтобы добавить дополнительные виртуальные машины, скопируйте скрипт еще раз. Щелкните Добавить ресурс и выберите Виртуальные машины. Этот скрипт одинаков для всех виртуальных машин, которые нужно добавить в одну среду.
Каждый компьютер взаимодействует с Azure Pipelines для координации развертывания приложения.
Вы можете добавить или удалить теги для виртуальной машины. Щелкните точки в конце каждого ресурса виртуальной машины в разделе Ресурсы.
Теги ограничивают развертывание определенными виртуальными машинами, если среда используется в задании развертывания. Длина каждого тега ограничена 256 символами. Количество тегов, которые можно создать, не ограничено.
Определение конвейера сборки CI
Вам нужен конвейер сборки CI, который публикует веб-приложение. Вам также потребуется скрипт развертывания, который можно запустить локально на сервере Ubuntu. Настройте конвейер сборки CI для выбранной среды выполнения.
Войдите в свою организацию Azure DevOps и откройте нужный проект.
В проекте перейдите на страницу Конвейеры и выберите действие для создания нового конвейера.
Выберите GitHub в качестве расположения исходного кода.
Вы можете быть перенаправлены на GitHub для входа. Для этого введите учетные данные GitHub.
Когда появится список репозиториев, выберите нужный репозиторий примеров приложений.
Azure Pipelines анализирует репозиторий и рекомендует подходящий шаблон конвейера.
Выберите начальный шаблон и скопируйте этот фрагмент YAML, чтобы создать общий проект Node.js с помощью npm. Вы добавите в этот YAML в последующих шагах.
trigger: - main pool: vmImage: ubuntu-latest stages: - stage: Build displayName: Build stage jobs: - job: Build displayName: Build steps: - task: UseNode@1 inputs: version: '16.x' displayName: 'Install Node.js' - script: | npm install npm run build --if-present npm run test --if-present displayName: 'npm install, build and test' - task: ArchiveFiles@2 displayName: 'Archive files' inputs: rootFolderOrFile: '$(System.DefaultWorkingDirectory)' includeRootFolder: false archiveType: zip archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip replaceExistingArchive: true - upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip artifact: drop
Дополнительные рекомендации см. в разделе Создание приложения Node.js с помощью gulp для создания сборки.
Выберите Сохранить и запустить>Фиксация непосредственно в ветви> mainСохранить и запустить.
Начинается новый запуск. Дождитесь завершения прогона.
Определение шагов CD для развертывания на виртуальной машине Linux
Измените конвейер и добавьте задание развертывания , ссылаясь на среду и ресурсы виртуальной машины, созданные ранее. Обновите ,
tags
чтобы указать теги для виртуальной машины.jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine tags: web1 # Update or remove value to match your tag strategy:
Дополнительные сведения о environment
ключевое слово и ресурсах, предназначенных для задания развертывания, см. в схеме YAML.
Выберите определенные наборы виртуальных машин из среды, чтобы получить развертывание, указав теги , определенные для каждой виртуальной машины в среде.
Дополнительные сведения см. в полной схеме YAML для задания развертывания.
Укажите или
runOnce
rolling
в качестве стратегии развертывания.runOnce
— это самая простая стратегия развертывания. Все обработчики жизненного цикла, а именноpreDeploy
deploy
,routeTraffic
иpostRouteTraffic
, выполняются один раз. Затем выполняется илиon:
on:
success
failure
.См. следующий пример задания развертывания для
runOnce
:jobs: - deployment: VMDeploy displayName: Web deploy environment: name: <environment name> resourceType: VirtualMachine strategy: runOnce: deploy: steps: - script: echo my first deployment
См. следующий пример фрагмента YAML для последовательной стратегии с конвейером Java. В каждой итерации можно обновить до пяти целевых объектов.
maxParallel
определяет количество целевых объектов, в которых можно развертывать параллельно. Выбор учитывает абсолютное число или процент целевых объектов, которые должны оставаться доступными в любое время, за исключением целевых объектов, в которых выполняется развертывание. Он также используется для определения условий успеха и сбоя во время развертывания.jobs: - deployment: VMDeploy displayName: web environment: name: <environment name> resourceType: VirtualMachine strategy: rolling: maxParallel: 2 #for percentages, mention as x% preDeploy: steps: - download: current artifact: drop - script: echo initialize, cleanup, backup, install certs deploy: steps: - task: Bash@3 inputs: targetType: 'inline' script: | # Modify deployment script based on the app type echo "Starting deployment script run" sudo java -jar '$(Pipeline.Workspace)/drop/**/target/*.jar' routeTraffic: steps: - script: echo routing traffic postRouteTraffic: steps: - script: echo health check post-route traffic on: failure: steps: - script: echo Restore from backup! This is on failure success: steps: - script: echo Notify! This is on success
При каждом выполнении этого задания журнал развертывания записывается в
<environment name>
среде, в которой вы создали и зарегистрировали виртуальные машины.
Представления трассировки конвейера в среде
Представление Развертывания обеспечивает полную трассировку фиксаций и рабочих элементов, а также журнал развертывания между конвейерами для каждой среды.
Дальнейшие действия
Похожие статьи
Кері байланыс
https://aka.ms/ContentUserFeedback.
Жақында қолжетімді болады: 2024 жыл бойы біз GitHub Issues жүйесін мазмұнға арналған кері байланыс механизмі ретінде біртіндеп қолданыстан шығарамыз және оны жаңа кері байланыс жүйесімен ауыстырамыз. Қосымша ақпаратты мұнда қараңыз:Жіберу және пікірді көру