variables:
- name: RerunFailedTestCase
${{if and(ge(variables['system.clock.hour'], 19), lt(variables['system.clock.hour'], 23)) }}:
value: 'false'
${{ else }}:
value: 'true'
在我的 yaml 管道上创建了一个变量。但这永远不会按照我设置的条件起作用。
如果在 19:00 到 23:00 之间运行,我希望它将
$(RerunFailedTestCase)
的值重新运行为 false
。以及任何其他时间的true
如果我没记错的话,在 compile 时没有办法获取系统日期,因此无法使用
${{ if... }}
等模板表达式来执行您想要的操作。
作为解决方法,您可以:
pipeline.startTime
以提取管道执行的时间完整的工作示例:
trigger: none
pool:
vmImage: 'ubuntu-latest'
variables:
- name: pipelineStartHour
value: "$[format('{0:HH}', pipeline.startTime)]" # runtime variable
jobs:
- job: 'ReRunFailedTestCases'
displayName: 'Re-run failed test cases'
steps:
- checkout: none
- script: |
echo "$(pipelineStartHour)"
displayName: 'Display pipeline start hour (UTC)'
- script: |
echo "Hello, world!"
displayName: 'Re-run failed test cases'
condition: |
and(
succeeded(),
in(variables['pipelineStartHour'], '19', '20', '21', '22')
)
请注意,
pipeline.startTime
的默认时区是UTC。