能否通过Release Gate REST API调用获取当前日期/时间?
实现方案
下面是三种可直接落地的实现方式,按操作复杂度从低到高排序:
直接使用发布门内置表达式(推荐)
Azure DevOps Release Gate 的校验规则原生支持时间处理函数,无需额外配置任务或调用第三方接口:
- 获取当前UTC时间戳直接调用
utcNow()函数即可,可自定义格式匹配你接口返回的时间字段格式,常用示例:- ISO 8601标准格式:
utcNow('yyyy-MM-ddTHH:mm:ssZ') - 13位Unix时间戳(毫秒):
ticks(utcNow())/10000 - 62135596800000
- ISO 8601标准格式:
- 直接在校验规则中写逻辑比对接口返回值和
utcNow()的返回值即可完成校验
通过临时任务输出时间变量
如果需要做时区转换、偏移计算等复杂逻辑,可以在Gate执行前增加1个PowerShell任务:
- 执行以下命令生成自定义时间戳并输出为管道变量:
# 输出UTC时间ISO格式 Write-Host "##vso[task.setvariable variable=currentTimestamp;isOutput=true]$([DateTime]::UtcNow.ToString('yyyy-MM-ddTHH:mm:ssZ'))"
- 后续Gate校验步骤直接引用变量
$(currentTimestamp)和接口返回值比对即可
获取截图中高亮的发布启动时间
如果你需要的是本次发布实例的启动时间而非Gate执行的实时时间,直接使用内置预定义变量$(Release.Deployment.StartTime)即可,该值就是你截图中标注的Timestamp,默认是UTC的ISO 8601格式,可直接用于比对。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

