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

Update Build Pipeline variables from .Net code

我们在 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;

管道变量是"settable at queue time"。但是我没有找到从我的代码中做到这一点的方法。

Update Build Pipeline variables from .Net code

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

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

查看文档 Logging Commands 了解更多详细信息。

然后您可以使用您的 .Net 代码调用此 .ps1

希望对您有所帮助。

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);