Azure Конвейерная многоэтапность в YAML по сравнению с отдельным выпуском - PullRequest
0 голосов
/ 10 июля 2020

Azure Конвейеры поддерживают несколько этапов в YAML. Типичный пример:

trigger:
- master

pool:
  name: Default
  demands:
  - npm
  - msbuild
  - visualstudio

stages:

  - stage: build

    jobs:
     - job: Build app

  - stage: deploy
   
    jobs:
    - job: Deploy to dev

Я не привык так работать. Обычно я запускал конвейер для создания своего приложения и перетаскивал артефакты в папку для размещения. Конвейер будет таким же независимо от среды, на которую позже будет направлен выпуск. Затем я бы выбрал запуск выпуска: интеграцию, UAT или производственную версию.

Однако, имея многоэтапный конвейер, мы смешиваем сборку и выпуск вместе. Итак, как бы мне выпустить в данной среде? Нужно ли мне дублировать этот конвейер для каждой среды?

1 Ответ

0 голосов
/ 11 июля 2020

Здесь вы можете использовать структуру шаблона. При этом вам нужно будет создать отдельные файлы для разных заданий и переменных. Затем вам нужно будет выполнить шаблоны с подходящими файлами шаблонов переменных для каждого этапа.

Структура каталогов Структура каталогов

Конвейер: Этапы конвейера

Среды Среды

Вот пример конвейера:

trigger:
- master

variables:
  - name: vmImage
    value: 'ubuntu-latest'

stages:
  - stage: Build
    displayName: Build stage
    jobs:
    - job: BuildJob
      pool:
        vmImage: $(vmImage)
      steps:
      - template: Jobs/build.yml
 
  - stage: NonProd
    displayName: Deploy non prod stage
    jobs:
    - deployment: DeploymentJob1
      pool:
        vmImage: $(vmImage)
      environment: non-prod
      variables:
        - template: Variables/non-prod.yml
      strategy:
        runOnce:
          deploy:
            steps:
            - template: Jobs/deploy.yml

  - stage: Prod
    displayName: Deploy prod stage
    jobs:
    - deployment: DeploymentJob2
      pool:
        vmImage: $(vmImage)
      environment: prod
      variables:
        - template: Variables/prod.yml
      strategy:
        runOnce:
          deploy:
            steps:
            - template: Jobs/deploy.yml
    

Jobs / build.yml

steps:
- script: echo I am building!
  displayName: 'Run Build'

Jobs / deploy.yml

steps:
- script: echo I am deploying to $(Environment)!
  displayName: 'Run Deployment'

Переменные / non-prod.yml

variables:
- name: Environment
  value: non-prod

Переменные / prod.yml

variables:
- name: Environment
  value: prod
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...