我们在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;
管道变量是“可在队列时间设置的”。但是,我找不到从代码中执行此操作的方法。
答案 0 :(得分: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);
答案 1 :(得分:0)
从.Net代码更新构建管道变量
作为解决方法,您可以通过使用Powershell脚本发出以下内容来更新变量值:
"##vso[task.setvariable variable=testvar;]testvalue"
查看文档Logging Commands,了解更多详细信息。
然后,您可以使用.Net代码将此称为.ps1
。
希望这会有所帮助。