【问题标题】:Azure Build Pipeline Bash Script now setting build variable properlyAzure Build Pipeline Bash 脚本现在可以正确设置构建变量
【发布时间】:2019-07-22 10:17:18
【问题描述】:

我的构建管道中有一个 Bash 脚本,它将根据触发构建的分支设置一些构建变量。但是,当我尝试在另一个 bash 脚本中回显这些变量时,其中一些不会回显。

设置环境变量:

if [[ $(Build.SourceBranchName) == 'develop' ]]; then
  echo $TagVersion
  echo $(Build.BuildId)

    echo '##vso[task.setvariable variable=AppVersion;]$TagVersion'
    echo '##vso[task.setvariable variable=ChangeSet;]$(Build.BuildId)'
    echo '##vso[task.setvariable variable=Environment;]DEVTEST'
    echo '##vso[task.setvariable variable=BuildConfig;]Debug'

fi

这有一个输出:

v1.4.0 
7090

设置版本:

echo $(AppVersion)
echo $(ChangeSet)
echo $(Environment)
echo $(BuildConfig)

这个输出

7090
DEVTEST
Debug

为什么 AppVersion 现在正在写入控制台?

【问题讨论】:

  • $TagVersion 值在哪里配置?

标签: bash azure azure-pipelines


【解决方案1】:

$() 语法在 bash 看到之前由代理评估,而 $var 由 bash 评估。这就是正确分配 ChangeSet 的原因。

echo '##vso[task.setvariable variable=AppVersion;]$TagVersion' 命令使用单引号 (') 来阻止 bash 解释内容。要扩展变量,请使用双引号 ("),即 echo "##vso[task.setvariable variable=AppVersion;]$TagVersion"

【讨论】:

    猜你喜欢
    • 2021-08-29
    • 2021-07-18
    • 2021-05-27
    • 2019-03-11
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2016-10-07
    相关资源
    最近更新 更多