TFS 2017 - 检索触发器信息构建定义

TFS 2017 - Retrieve Trigger information build definitions

我正在尝试通过我的 C# 应用程序检索 vNext BuildDefinitions 的时间表。

我可以检索我需要的 BuildDefinition 对象。

List<BuildDefinitionReference> builddefs = buildClient.GetDefinitionsAsync().Result;

var buildDef = buildClient.GetFullDefinitionsAsync(project: project,
name: buildDefName).Result.ToArray();

但是看BuildDefinition.Trigger的资料,好像没有我需要的。 类似于 XAML 构建,我希望能够阅读 BuildDefinition.Schedules,以查看每个构建的计划时间。

谁知道这些信息目前保存在哪里?

更新: 通过将 BuildTrigger 转换为 ScheduleTrigger

解决了这个问题
if (buildDefinition.Triggers != null)
{
    foreach (BuildTrigger trigger in buildDefinition.Triggers)
    {
        if (trigger is ScheduleTrigger)
        {
            ScheduleTrigger scheduleTrigger = trigger as ScheduleTrigger;

            foreach (var schedule in scheduleTrigger.Schedules)
            {
                //Do magic
            }
        }
    }
}

您可以使用 Rest API 到 Get a build definition,示例:

GET https://tfsserver:8080/tfs/DefaultCollection/Fabrikam-Fiber-Git/_apis/build/definitions/29?api-version=2.0

然后您将收到如下响应,其中包含触发信息:

  "triggers": [
    {
      "schedules": [
        {
          "branchFilters": [
            "+$/MyFirstProject/Test"
          ],
          "timeZoneId": "UTC",
          "startHours": 3,
          "startMinutes": 0,
          "daysToBuild": "all",
          "scheduleJobId": "18316444-edbb-479d-950d-7714ba39d3d6",
          "scheduleOnlyWithChanges": true
        }
      ],
      "triggerType": "schedule"
    }

以及各成员供大家参考:

Members

branchFilters: string[].

daysToBuild: ScheduleDays. Days for a build (flags enum for days of the week)

scheduleJobId: string. The Job ID of the Scheduled job that will queue the scheduled build. Since a single trigger can have multiple schedules and we want a single job to process a single schedule (since each schedule has a list of branches to build), the schedule itself needs to define the Job Id. This value will be filled in when a definition is added or updated. The UI does not provide it or use it.

startHours: number. Local timezone hour to start

startMinutes: number. Local timezone minute to start

timeZoneId: string. Time zone of the build schedule (string representation of the time zone id)

详情请参考Schedule 休息API.

Microsoft.TeamFoundationServer.ExtendedClient 包更新到最新版本,GetFullDefinitionsAsync 方法应该 return 存储在 中的计划信息触发器 属性 而不是计划 属性.