Echo 在 Azure Pipelines 的 YAML 文件中打印出不同的东西

Echo in the Azure Pipelines's YAML file prints different things

我的 Azure 管道 YAML 文件中有此代码:

steps:
- bash: |
    echo $(date +%Y)
    echo "##vso[task.setvariable variable=buildName]$(date +%Y)_$(date +%m)_$(Build.BuildNumber)_v3.7"
    echo $BUILDNAME

第一个 echo 正确打印 2020,但第三个 $(date +%Y)_$(date +%m)_4728573844_v3.7。如您所见,这里的年份和月份并未转换为值。为什么?

这是由 variablelimitation 引起的预期操作。

To set a variable from a script, you use the task.setvariable logging command. This doesn't update the environment variables, but it does make the new variable available to downstream steps within the same job.

简而言之就是当你在Bash任务中使用task.setvariable命令新建一个变量时,你创建的变量在当前Bash 任务。它仅在后续步骤中可用。

所以,在这里,当您添加另一个 Bash 任务和 echo 您创建的这个变量时 buildName。您将看到它已成功创建:

steps:
- bash: |
    echo $(date +%Y)
    echo '##vso[task.setvariable variable=buildName]$(date +%Y)_$(date +%m)_$(Build.BuildNumber)_v3.7'

- bash: |
    echo $(buildName)