【问题标题】:Update Build Pipeline variables from .Net code从 .Net 代码更新构建管道变量
【发布时间】:2019-06-24 14:55:59
【问题描述】:

我们在 Azure DevOps 中有一个构建定义,它创建一个 docker 映像并将其推送到 Azure 容器注册表。该定义有一个必须在构建时插入的管道变量。我必须从我的 .Net 代码中对构建进行排队。我可以得到定义,但看不到如何更新管道变量。

VssBasicCredential credentials = new VssBasicCredential("",persAccToken);
VssConnection connection = new VssConnection(uri, credentials);
BuildHttpClient buildClient = connection.GetClient<BuildHttpClient>();
BuildDefinition def = buildClient.GetDefinitionAsync(projectName, definitionId).Result;

管道变量“可在排队时设置”。但是我找不到从我的代码中执行此操作的方法。

【问题讨论】:

    标签: c# azure-devops azure-pipelines tfs-sdk


    【解决方案1】:

    BuildDefinition 具有包含管道变量的属性变量。该变量可以删除,然后添加新值或更新

    BuildDefinitionVariable bdv = new BuildDefinitionVariable { AllowOverride = true, 
                                   IsSecret = false, Value = "new-vaule" };
    
    def.Variables.Remove("variable-name");
    def.Variables.Add("variable-name", bdv);
    buildClient.UpdateDefinitionAsync(def, projectName, def.Id);
    

    【讨论】:

    • 关于解决方案的一个注意事项,当您调用 UpdateDefinitionAsync() 时,它将返回一个新的构建定义对象,该对象具有更新的修订号。在将构建而不是原始对象排队时,您将希望使用该对象。
    【解决方案2】:

    从 .Net 代码更新构建管道变量

    作为解决方法,您可以通过使用 Powershell 脚本发出以下命令来更新变量值:

    "##vso[task.setvariable variable=testvar;]testvalue"
    

    查看文档Logging Commands了解更多详情。

    然后你可以用你的 .Net 代码调用这个.ps1

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我需要一个纯 .Net 代码。自己找到解决方案
    猜你喜欢
    • 1970-01-01
    • 2021-11-23
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多