如何在C# Web API中通过REST API或TFS库调度流水线定时执行?
问题:如何通过TFS SDK或Azure DevOps REST API为流水线设置定时触发器
我正在ASP.NET Web应用中使用Microsoft.TeamFoundation.Build.WebApi、Microsoft.TeamFoundation.Core.WebApi、Microsoft.VisualStudio.Services.Common、Microsoft.VisualStudio.Services.WebApi库触发Azure DevOps流水线。目前已实现触发流水线、获取工作项及流水线定义的功能,但无法通过buildClient.QueueBuildAsync(build)为流水线设置定时触发。
我尝试使用Microsoft.TeamFoundation.Build.WebApi中的抽象类BuildTrigger(它包含DefinitionTriggerType枚举,其中Schedule值为8),但不知道如何在排队流水线前应用该设置。
当前运行流水线的代码如下:
var credential = new VssBasicCredential(string.Empty, patToken); var connection = new VssConnection(new Uri("https://dev.azure.com/myteam5468/"), credential); var buildClient = connection.GetClient<BuildHttpClient>(); var projectClient = connection.GetClient<ProjectHttpClient>(); projectClient.GetProjects(); var project = projectClient.GetProject(projectName).Result; Console.WriteLine(project.Name); var definition = buildClient.GetDefinitionAsync(projectName, userSelectedPipelineID).Result; Console.WriteLine(definition.Name); var build = new Build() { Definition = definition, Project = project, }; // 运行流水线 buildClient.QueueBuildAsync(build).Wait(); Console.WriteLine(string.Format("Pipeline {0} started running successfully", definition.Name));
请问如何使用TFS库定义定时触发器?
Update 1
根据建议,我尝试用以下代码更新现有流水线定义,但无法设置TriggerType——该属性为只读:
buildClient.UpdateDefinitionAsync(definition.Triggers[0].TriggerType = DefinitionTriggerType.Schedule);
Update 2
我尝试用TeamFoundation.Build.WebApi创建触发器,但看到说明指出无法通过该SDK设置触发器:
// 创建触发器 ScheduleTrigger trigger = new ScheduleTrigger(); // 创建调度计划 Schedule schedule = new Schedule(); schedule.StartHours = 10; schedule.StartMinutes = 00; // 将计划添加到触发器的列表中 trigger.Schedules = new List<Schedule>(); trigger.Schedules.Add(schedule);
请问Azure DevOps仓库中创建和调度触发器的REST API结构是什么?
谢谢!
内容的提问来源于stack exchange,提问作者Divyanshu Agarwal
相关产品推荐
相关产品推荐

