我们曾经遇到过类似的问题。我们即将更新我们的解决方案以适应变量组,但如果您想要一种不需要变量组的方法,您总是可以像这样做:
- 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'
关于脚本的快速概述。如果构建是PullRequest或手动操作的一部分,我们希望使用默认的构建脚本进行暂存构建。否则,我们假设该构建是用于生产环境的(您需要一些分支策略来强制执行此操作)。然后发布管道将检查我们设置的构建标记,如下所示:
- 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"'
现在,正如我所说,我们正在摆脱这种方式,但它确实运行得非常好,并且使我们能够拥有一个构建版本,可以在不需要进行任何高级操作的情况下使用正确的设置进行部署。
如果您使用类似于此的东西,则最后一步是根据构建标记和分支在发布管道中过滤构建版本。