Итак, у нас была похожая проблема. Мы собираемся обновить наше решение для работы с группой переменных, но если вам нужен способ обойтись без нее, вы всегда можете сделать что-то вроде этого:
- script: |
npm install
npm run test:unit
if [ $? -ne 0 ]; then
exit 1
fi
npm run build-prod
condition: and(succeeded(), not(in(variables['Build.Reason'], 'PullRequest', 'Manual')))
displayName: 'npm install, test and build for prod'
- script: |
npm install
npm run test:unit
if [ $? -ne 0 ]; then
exit 1
fi
npm run build
condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest', 'Manual'))
displayName: 'npm install, test and build for test'
Так что краткая разбивка по сценариям. Если сборка была частью PullRequet или руководства, нам нужна промежуточная сборка, в которой используется сценарий сборки по умолчанию. В противном случае мы предполагали, что сборка предназначена для производства (вам понадобятся некоторые политики веток, чтобы обеспечить это). Затем конвейер выпуска проверил тег сборки, который мы установили следующим образом:
- task: PowerShell@2
condition: and(succeeded(), not(in(variables['Build.Reason'], 'PullRequest', 'Manual')))
inputs:
targetType: 'inline'
script: 'Write-Host "##vso[build.addbuildtag]release"'
- task: PowerShell@2
condition: and(succeeded(), in(variables['Build.Reason'], 'PullRequest', 'Manual'))
inputs:
targetType: 'inline'
script: 'Write-Host "##vso[build.addbuildtag]test"'
Теперь, как я уже сказал, мы отходим от этого, но он работал довольно хорошо и позволил нам иметь одну сборку, которая будет развернута с правильными настройками без необходимости делать что-то слишком сложное.
Если вы используете что-то подобное, последний шаг - фильтровать сборки, когда они попадают в конвейер выпуска, на основе тега сборки и ветки.
person
rahicks
schedule
17.12.2019