gpt4 book ai didi

azure-devops - 如何在发布管道中使用来自构建管道的自定义变量

转载 作者:行者123 更新时间:2023-12-04 15:35:19 27 4
gpt4 key购买 nike

问题:
有没有办法在 azure-devops 的构建管道中定义自定义变量,然后可以以任何方式在发布管道中使用/暴露给它?

场景:
我们没有使用变量组,因为我们需要在构建管道中动态设置变量,然后在发布管道中使用它——它不是静态的 super 全局。

release variables 检查文档和 build variables但找不到任何帮助信息或提示,这是可能的。

我试过的

  • 定义一个 variablevariables (在构建管道中)并尝试使用 $(name) 在发布管道中访问它或检查它是否在 env .

  • 附加 - 动机
    这背后的动机是
  • 读取构建管道步骤中使用的最新 git-tag 并将其公开到管道变量 VERSION (实际上,我们在那期间撞了补丁)
  • 发布构建是一个手动步骤。
  • 如果发布了构建版本,azure-devops gui 会向我们显示发布管道的所有变量,这些变量“在发布期间是可设置的——这包括我们要使用
  • 发布此包的版本|
  • 我们希望这个“版本”预先填充构建管道的版本,作为对下一个版本的建议
  • 在发布管道中,我们 check out repo,添加 VERSION作为标记并使用此版本打包/发布工件
  • 最佳答案

    How to use a custom variable from build-pipeline in a release pipeline



    您可以尝试使用 REST API Release Definitions - Update更新发布管道中的默认变量以使用构建管道中定义的值。
    PUT https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=5.1

    细节:

    中定义自定义变量构建管道,喜欢 TestValue , 值为 123 :

    enter image description here

    还在 中定义相同的自定义变量发布管道 默认 123 :

    enter image description here

    然后添加一个内联的 powershell 脚本来调用 REST API Definitions - Update更新发布管道中的默认值:
    $url = "https://vsrm.dev.azure.com/<OrganizationName>/<ProjectName>/_apis/release/definitions/<DefinitionId>?api-version=5.1"

    Write-Host "URL: $url"
    $pipeline = Invoke-RestMethod -Uri $url -Method Get -Headers @{
    Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"
    }
    Write-Host "Pipeline = $($pipeline | ConvertTo-Json -Depth 100)"

    # Update an existing variable named TestValue to its new value 987
    $pipeline.variables.TestValue.value = "$(TestValue)"

    ####****************** update the modified object **************************
    $json = @($pipeline) | ConvertTo-Json -Depth 99


    Write-Host "URL: $json "

    $updatedef = Invoke-RestMethod -Uri $url -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}

    write-host "=========================================================="
    Write-host "The value of Varialbe 'TestValue' is updated to" $updatedef.variables.TestValue.value

    在这种情况下,我们可以在构建管道排队时动态设置该变量,该值将覆盖发布管道中的默认值,以便我们可以使用它。

    希望这可以帮助。

    关于azure-devops - 如何在发布管道中使用来自构建管道的自定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59964994/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com