Azure Devops - 将 YAML 脚本中的变量设置为日期时间

Cou*_*ero 5 yaml devops azure-devops azure-pipelines

我正在尝试为 Azure DevOps YAML 管道中的 NuGet 包生成名称。

上下文正在每个自动构建上创建包,其中包含包的名称、分支的名称、日期和递增的修订号。

packageName-branchName-year-month-day-revision

这样,当创建新的功能分支时,它将生成一个独特的包,可用于在需要它的项目中进行测试。

我正在努力根据环境变量(例如日期或修订号)在 YAML 文件中设置变量。

使用 ##vso 命令,我可以将“myVariable”设置为 hello 并将其打印出来。

- script: |
    echo '##vso[task.setvariable variable=myVariable]hello'

- script: |
    echo my variable is $(myVariable)
Run Code Online (Sandbox Code Playgroud)

当我尝试如下从 PowerShell 设置变量时,出现以下错误“#$dateStr”未被识别为内部或外部命令”。

# Create a variable
- script: |
    #$dateStr = (Get-Date).ToString('yyyy-MM-dd') 
    echo '##vso[task.setvariable variable=myVariable]#$dateStr'

# Print the variable
- script: |
    echo my variable is $(myVariable) 
Run Code Online (Sandbox Code Playgroud)

当我尝试在 YAML 文件的变量部分中设置变量时,如下所示。

variables:
  solution: '**/*.sln'
  foo: $(Date:yyyyMMdd)

- script: |
    echo my variable is $(foo)
Run Code Online (Sandbox Code Playgroud)

该变量未进行插值,其输出为。

'我的变量是 $(Date:yyyyMMdd)'

如何根据 $(rev) 和 $(Date) 等环境变量创建变量?

4c7*_*b41 5

我不认为有内置date变量,但对于 powershell 情况,您只需#在变量之前删除它,并且必须将其括起来,"否则 powershell 不会扩展您的变量

echo "##vso[task.setvariable variable=myVariable]$dateStr"
Run Code Online (Sandbox Code Playgroud)