Условия в yaml конвейере для развертывания - PullRequest
0 голосов
/ 05 апреля 2020

У меня вопрос по поводу состояния yaml. Я следовал этой документации: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/conditions?view=azure-devops&tabs=yaml

Мне нужно развернуть в каждой среде на основе определенных условий. Например,

  • развернуть в среде 'int' только в том случае, если исходная ветка 'развернуть'
  • развернуть в среде 'ua', только если ветвь источника является 'master'
  • развернуть в среде 'prod', только если исходная ветвь является 'master'

Если какое-либо из этих условий выполняется, развернуть в этой среде.

Я написал условие следующим образом :

condition: |
      or(
        and(
          eq(variables['Build.SourceBranch'], 'refs/heads/develop'),
          eq('${{ parameters.environmentAbbreviation }}', 'int')
        ),
        and(
          eq(variables['Build.SourceBranch'], 'refs/heads/master'),
          eq('${{ parameters.environmentAbbreviation }}', 'ua')
        ),
        and(
          eq(variables['Build.SourceBranch'], 'refs/heads/master'),
          eq('${{ parameters.environmentAbbreviation }}', 'prod')
        )
      )

Это то, что я получаю при выполнении сборки / выпуска:

Оценка:

или ( и (eq (variable [' Build.SourceBranch '],' refs / Heads /velop '), eq (' int ',' int ') ) и (eq (переменные [' Build.SourceBranch '],' refs /head / master ') ), eq ('int', 'ua')) и (eq (переменные ['Build.SourceBranch'], 'refs /head / master'), eq ('int', 'prod')))

Расширенные:

или ( и (eq ('refs / Heads / Develop', 'Refs / Heads / Develop'), EQ ('Int', 'int') ), и (eq ('refs /глав / разработка', 'refs / заголовки / master'), eq ('int', 'ua')) и (eq ('refs /глав) / Develop ',' Refs / Heads / Master '), EQ ("в t, 'prod')))

Поскольку первое условие верно, я предполагаю, что развертывание начнется в среде int. Но это не развернулось в Int среде. Почему это?

1 Ответ

1 голос
/ 06 апреля 2020

Не уверен, какой у вас полный сценарий YAML, но условие должно работать для развертывания в среде int.

Я просто запускаю его, и он отлично работает. Вот то, с чем я тестирую YAML, и вы можете получить чек с вашим:

parameters:
- name: 'environmentAbbreviation'
  type: string
  default: int

stages:
- stage: DeployToDevelopment
  displayName: Deploy to 
  jobs:
  - deployment: DeployDev
    condition: or(and(eq(variables['Build.SourceBranch'], 'refs/heads/develop'), eq('${{ parameters.environmentAbbreviation }}', 'int')), and(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq('${{ parameters.environmentAbbreviation }}', 'ua')), and(eq(variables['Build.SourceBranch'], 'refs/heads/master'), eq('${{ parameters.environmentAbbreviation }}', 'prod')))
    environment: ${{ parameters.environmentAbbreviation }}
    strategy:
      runOnce:
        deploy:
          steps:
          - pwsh: |
              Write-Host ${{ parameters.environmentAbbreviation }}
            name: outputVars

enter image description here

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