Бөлісу құралы:


Развертывание на виртуальной машине 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

Создание среды с виртуальными машинами

Вы можете добавлять виртуальные машины в качестве ресурсов в средах и использовать их для развертываний с несколькими виртуальными машинами. Представление журнала развертывания обеспечивает возможность трассировки от виртуальной машины до фиксации.

  1. Войдите в организацию Azure DevOps и перейдите к проекту.

  2. Перейдите на страницу Конвейеры и выберите Среды>Создать среду.

  3. Введите имя среды (обязательно) и описание (при желании).

  4. Выберите Виртуальные машины в качестве ресурса для добавления в среду, а затем нажмите кнопку Далее.

  5. Выберите Linux в поле Операционная система и скопируйте скрипт регистрации.

  6. Запустите сценарий регистрации на каждой из целевых виртуальных машин, зарегистрированных в среде.

    Примечание

    • Личный маркер доступа (PAT) вошедшего пользователя предварительно вставляется в скрипт и истекает через три часа.
    • Если на виртуальной машине уже есть агент, укажите уникальное имя для регистрации в среде.
  7. После регистрации виртуальная машина начнет отображаться как ресурс среды в разделе Ресурсы.

    Снимок экрана: создание виртуальной машины.

  8. Чтобы добавить дополнительные виртуальные машины, скопируйте скрипт еще раз. Щелкните Добавить ресурс и выберите Виртуальные машины. Этот скрипт одинаков для всех виртуальных машин, которые нужно добавить в одну среду.

    Каждый компьютер взаимодействует с Azure Pipelines для координации развертывания приложения.

    Снимок экрана: представление ресурсов виртуальной машины.

  9. Вы можете добавить или удалить теги для виртуальной машины. Щелкните точки в конце каждого ресурса виртуальной машины в разделе Ресурсы.

    Теги ограничивают развертывание определенными виртуальными машинами, если среда используется в задании развертывания. Длина каждого тега ограничена 256 символами. Количество тегов, которые можно создать, не ограничено.

    Снимок экрана: представление тегов.


Определение конвейера сборки CI

Вам нужен конвейер сборки CI, который публикует веб-приложение. Вам также потребуется скрипт развертывания, который можно запустить локально на сервере Ubuntu. Настройте конвейер сборки CI для выбранной среды выполнения.

  1. Войдите в свою организацию Azure DevOps и откройте нужный проект.

  2. В проекте перейдите на страницу Конвейеры и выберите действие для создания нового конвейера.

  3. Выберите GitHub в качестве расположения исходного кода.

    Вы можете быть перенаправлены на GitHub для входа. Для этого введите учетные данные GitHub.

  4. Когда появится список репозиториев, выберите нужный репозиторий примеров приложений.

  5. 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

  1. Измените конвейер и добавьте задание развертывания , ссылаясь на среду и ресурсы виртуальной машины, созданные ранее. Обновите , 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.

  1. Выберите определенные наборы виртуальных машин из среды, чтобы получить развертывание, указав теги , определенные для каждой виртуальной машины в среде.

    Дополнительные сведения см. в полной схеме YAML для задания развертывания.

  2. Укажите или runOncerolling в качестве стратегии развертывания.

    runOnce — это самая простая стратегия развертывания. Все обработчики жизненного цикла, а именно preDeploydeploy, routeTrafficи postRouteTraffic, выполняются один раз. Затем выполняется или on:on:successfailure .

    См. следующий пример задания развертывания для runOnce:

    jobs:
    - deployment: VMDeploy
      displayName: Web deploy
      environment:
        name: <environment name>
        resourceType: VirtualMachine
      strategy:
        runOnce:
          deploy:
            steps:
            - script: echo my first deployment
    
  3. См. следующий пример фрагмента 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> среде, в которой вы создали и зарегистрировали виртуальные машины.

Представления трассировки конвейера в среде

Представление Развертывания обеспечивает полную трассировку фиксаций и рабочих элементов, а также журнал развертывания между конвейерами для каждой среды.

Снимок экрана: представление развертываний.

Дальнейшие действия