You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Azure Pipeline YAML文件中获取当前日期作为变量使用

Azure DevOps流水线注入日期格式版本号实现方案

不需要找专门的内置日期变量,两种可直接落地的方案按需选择即可:


方案1:零脚本直接用系统内置构建号变量

Azure DevOps本身支持自定义构建编号格式,直接在YAML流水线最顶部定义name字段(即构建号生成规则)即可:

# 纯日期格式,生成结果类似2024.05.20
name: $(Date:yyyy.MM.dd)

# 如果需要区分同一天的多次构建,追加当日构建序号,生成结果类似2024.05.20.4,完全符合.NET版本规范
# name: $(Date:yyyy.MM.dd).$(Rev:r)

trigger:
- main
# 其余原有流水线配置保持不变...

定义完成后,系统自动生成的$(Build.BuildNumber)变量就是你需要的日期格式版本号,直接替换原有publish命令里硬编码的日期即可:

- script: dotnet publish -c $(buildConfiguration) -p:Version=$(Build.BuildNumber) -p:SourceRevisionId=$(Build.SourceVersion)
  displayName: 执行dotnet发布

方案2:自定义脚本生成日期变量

如果你需要更灵活的日期逻辑(比如用本地时区而非默认UTC时间、加自定义后缀),就在所有构建步骤最前面加一步脚本,把日期写入流水线变量即可:

  • Windows构建池用PowerShell:
- powershell: |
    # 以东八区时间举例,可替换为你需要的时区
    $buildDate = [TimeZoneInfo]::ConvertTimeFromUtc((Get-Date).ToUniversalTime(), [TimeZoneInfo]::FindSystemTimeZoneById("China Standard Time")).ToString("yyyy.MM.dd")
    # 写入流水线变量,后续步骤可直接通过$(BuildDate)调用
    Write-Host "##vso[task.setvariable variable=BuildDate]$buildDate"
  displayName: 生成构建日期变量
  • Linux/macOS构建池用Bash:
- bash: |
    # 东八区日期格式
    buildDate=$(TZ='Asia/Shanghai' date +"%Y.%m.%d")
    echo "##vso[task.setvariable variable=BuildDate]$buildDate"
  displayName: 生成构建日期变量

变量设置完成后,publish命令直接调用$(BuildDate)即可:

- script: dotnet publish -c $(buildConfiguration) -p:Version=$(BuildDate) -p:SourceRevisionId=$(Build.SourceVersion)
  displayName: 执行dotnet发布

注意事项

  • 系统内置的$(Date:xxx)占位符默认取UTC时间,如果你的流水线构建节点在海外,直接用可能出现日期差1天的问题,需要本地时区日期就用方案2的脚本方式生成即可。
  • 如果你用的是经典可视化流水线,不需要写YAML,直接在流水线「选项」页修改构建号格式,或者在变量阶段加对应脚本步骤,逻辑完全一致。

内容的提问来源于stack exchange,提问作者Neutrino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 15:24:20