Условно включите имя ветви в Azure имя сборки DevOps - PullRequest
0 голосов
/ 17 февраля 2020

Я использую Azure DevOps для построения конвейера, но я использую sh, чтобы изменить имя сборки. Это вполне возможно в соответствии с документацией .

Имея это в виду, я протестировал следующее, которое сработало. Пока все хорошо ...

name: '1.0.$(Rev:r)-$(Build.SourceBranchName)'

1.0.1-master

Однако, одно из моих требований - исключить имя ветви, если оно 'master' Я попробовал следующее. Похоже, это сработало в первую очередь, поскольку к «master» не добавлялось имя ветви, но когда я запустил ветку функции, я обнаружил, что $(Build.SourceBranchName) не расширяется.

variables:
  ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
    branchName: ''
  ${{ if ne(variables['Build.SourceBranchName'], 'master') }}:
    branchName: '-$(Build.SourceBranchName)'

name: '1.0.$(Rev:r)$(branchName)'

I С тех пор пробовал ${{ variables.Build.SourceBranchName }} и $[variables.Build.SourceBranchName], как описано в документации , но при написании они токен либо игнорируется, либо возвращает пустую строку. Три формата оставляют меня со следующими именами сборки:

1.0.1 - $ (Build.SourceBranchName)
1.0.1-
1.0.1 - $ [variable.Build. SourceBranchName]

В документации о пользовательских именах упоминается переменная $(SourceBranchName), но я пробовал это, и она также не работает.

Что я сбивает с толку то, что выражения в сегменте variables: могут обращаться к значениям переменных , как описано здесь , но, по-видимому, сам сегмент variables: не может.

Возможно ли условно назовите сборку, чтобы я мог включать / исключать имя ветви по мере необходимости?

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Проблема в том, как вы ссылаетесь на $ (Build.SourceBranchName) в выражении времени разбора. Он не доступен в этом формате в контексте. Дополнительная информация здесь

Это работает для меня!

variables:
  system.debug: true
  ${{ if eq(variables['Build.SourceBranchName'], 'master') }}:
    branchName: ''
  ${{ if ne( variables['Build.SourceBranchName'], 'master') }}:
    branchName: -${{ variables['Build.SourceBranchName'] }}

name: '1.0.$(Rev:r)$(branchName)'

Хорошая дополнительная информация в ответе Ланса ##vso[build.updatebuildnumber] может быть хорошим путем, или вы можете использовать GitVersion ,

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

Можно ли условно назвать сборку, чтобы я мог включать / исключать имя ветви по мере необходимости?

Альтернативный обходной путь - использовать Задача PowerShell обновить номер сборки. Отметьте этот официальный документ :

. Вы можете использовать что-то вроде: ##vso[build.updatebuildnumber]my-new-build-number.

Пример:

name: 1.0.$(Rev:r)

steps:

- task: PowerShell@2
  condition: and(succeeded(), ne(variables['Build.SourceBranchName'], 'master'))
  inputs:
    targetType: 'inline'
    script: |
      $buildNumber = $Env:BUILD_BUILDNUMBER
      $revision= $buildNumber.Substring($buildNumber.LastIndexOf('.') + 1)
      Write-Host "##vso[build.updatebuildnumber]1.0.$revision-$(Build.SourceBranchName)"

Скопируйте это на свой yaml, тогда он может работать, чтобы удовлетворить ваши требования выше. О том, как использовать $(rev:r) в задании, получите подсказку от этой проблемы , благодаря Shayki Abramczyk !

Надеюсь, что все выше помогает:)

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