Триггеры при выпуске ветки X стратегии - PullRequest
0 голосов
/ 06 февраля 2020

Вопрос: как настроить CI / CD в конвейерах YAML для следующего контекста.

ветви

  • master
  • release / {ALFHABETICAL NAME} ex. выпуск / Альберт следующий выпуск - выпуск / Бертран и т. д.

окружения

  • принять: все, что выдвинуто мастер
  • тест: последний выпуск отл. релиз / Bertrand
  • песочница: последний выпуск -1 (здесь мы можем тестировать исправления) ex. release / Albert
  • live: последний выпуск -1 (с исправлениями)

Ближайшее решение

build: создает артефакты проекта build.yml

trigger:
- master
- release/*

pool:
  vmImage: 'ubuntu-latest'

steps:

- powershell: |
    New-Item -Path . -Name "testfile1.txt" -ItemType "file" -Value "This is a text string."

- publish: $(Pipeline.workspace)
  artifact: testArtifact

release-phase1: развертывание главной ветви для принятия release-phase1.yml

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - master

pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

release-phase2: развертывание выпускной ветви для тестирования release-phase2.yml

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - release/current

pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

release-phase3: развертывание ветки release-1 в изолированной программной среде и после утверждения вручную в live release-phase3.yml

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - release/previous


pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

Причины, по которым это решение не отвечает нашим потребностям:

  • имена веток релиза не являются c.
  • у нас должна быть возможность запустить конвейер release-phase3.yml, не выполняя сборку на этих ветвях. Он должен загрузить артефакты из последней сборки этой ветки. Что не так.

КРАТКОЕ НАЗНАЧЕНИЕ

1 Ответ

0 голосов
/ 10 февраля 2020

Поскольку у вас есть несколько ветвей (основная ветка и ветвь релизов), разная ветка создается и развертывается в другой среде. Таким образом, вы можете попробовать создать конвейер yaml сборки CI в каждой ветви и поместить конвейер yaml развертывания компакт-диска в шаблон * yaml шаблона master в основной ветви. (Для получения кода необходимо иметь файл сборки yaml в каждой ветви. В этой ветке построено. Вы можете проверить это thread ).

Ниже приведен простой пример.

В основной ветке

Есть azure -pipelines.yml и template-deploy.yml. В azure -pipelines.yml значение Environment будет передано в качестве параметра в template-deploy.yml. Так что сборка будет развернута в соответствующей среде.

azure -pipelines.yml:

trigger: 
- master
- release/*

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: deploy
      type: git
      name: {project name}

jobs: 
- job: Build
  steps: 
  - script:  echo "start build job"

- template: template-deploy.yml@deploy
  parameters: 
    envir: "prod"

template-deploy.yml:

parameters:
  envir: ""

jobs:
- deployment: DeployWeb
  environment: '${{parameters.envir}}'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO

В ветвях релиза

Вы можете определить его отдельный yaml сборки ci, как показано ниже:

azure -pipelines.yml в ветке release-phase2:

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: deploy
      type: git
      name: {project name}

jobs: 
- job: Build
  steps: 
  - script:  echo "start build job"

- template: template-deploy.yml@deploy
  parameters: 
    envir: "test"
...