【问题标题】:Can we override Azure DevOps variable groups values from a file input我们能否覆盖来自文件输入的 Azure DevOps 变量组值
【发布时间】:2020-01-05 06:33:13
【问题描述】:

我在 Azure DevOps 中有一个完整的 CI/CD 管道,它运行良好。现在我有一个包含版本号的 JSON 文件。

我需要将此版本号作为全局变量。如何将文件值分配给全局变量。我需要使用这个版本号作为我的构建管道 id、docker 标签和发布管道 id。

【问题讨论】:

  • 嗨,现在怎么样了?你能用文件输入成功覆盖变量组值吗?如果您仍然面临一些问题,请将正确答案标记为已解决或发表评论,因此其他 SO 用户将能够看到该解决方案是否有效:-)

标签: azure-devops continuous-integration yaml azure-pipelines continuous-deployment


【解决方案1】:

设置全局变量的方法是:

##vso[task.setvariable variable=name;]value

因此您可以编写一个 PowerShell 脚本,从 JSON 文件中读取发布版本并设置变量,例如:

$jsonFile = Get-Content path/to/json
$json = $jsonFile | ConvertFrom-Json
$version = $json.release.version
Write-Host "##vso[task.setvariable variable=releaseVersion;]$version"

现在您可以在您的 docker 标签等中使用变量 $(version)

【讨论】:

    【解决方案2】:

    只是为了添加到现有答案,以下是您将构建 ID 设置为计算值的方式(因为您无法在构建开始之前设置它,因为它仅在构建期间计算):

    - pwsh: Write-Host "##vso[build.updatebuildnumber]${env:VERSION}"
    

    假设 version 是您调用变量的方式。

    【讨论】:

    • 我们可以在 azure-pipeline.yml 中使用此代码还是需要将其作为单独的代码?
    • 您可以在现有管道定义中使用它
    猜你喜欢
    • 2019-03-17
    • 2019-05-18
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    相关资源
    最近更新 更多