Azure Pipeline:循环阶段中如何隐藏非测试环境的测试作业?
循环生成阶段时仅测试环境显示Test作业的解决方案
解决思路很直接:别给QA和生产环境生成Test作业的定义,只在遍历到测试环境时,才把Test作业加到对应的阶段里。这样其他环境的阶段里根本不会有这个作业,自然就不会出现“已跳过”的状态。
修改后的完整代码示例
- ${{ each environment in parameters.environments }}: - stage: Deploy_${{ environment.name }} displayName: 部署到${{ environment.name }}环境 jobs: # 这里放该环境通用的部署作业 - job: Deploy displayName: 部署 steps: - template: deploy.yaml # 仅当当前环境是测试时,添加Test作业 ${{ if eq(environment.name, 'Test') }}: - job: Test displayName: 测试 steps: - template: test.yaml
关键细节
- 这里的
${{ if eq(environment.name, 'Test') }}是编译时条件判断,在流水线初始化阶段就会执行,不符合条件的环境不会生成Test作业的任何代码,UI里也就完全看不到这个作业。 - 要保证
parameters.environments里的环境名称和判断里的'Test'大小写完全一致(YAML对大小写敏感)。 - 这种方式从根源上避免了“先创建作业再跳过”的逻辑,完美解决你遇到的循环内条件操作限制问题。
内容的提问来源于stack exchange,提问作者user29445754
相关产品推荐
相关产品推荐

