我试图通过我的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
}
}
}
}
答案 0 :(得分:0)
您可以将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"
}
每个成员供您参考:
<强>成员强>
branchFilters: string []。
daysToBuild: ScheduleDays。构建日期(星期几的标记枚举)
scheduleJobId:字符串。将对计划的构建进行排队的计划作业的作业ID。由于单个触发器可以有多个 时间表,我们希望单个工作处理单个时间表(从那时起) 每个计划都有一个要建立的分支列表),计划本身 需要定义作业ID。这个值将在a时填写 添加或更新定义。用户界面不提供或使用它。
startHours:号码。当地时区开始时间
startMinutes:号码。当地时区分钟开始
timeZoneId:字符串。构建计划的时区(时区ID的字符串表示)
详情请参阅Schedule Rest API。
答案 1 :(得分:0)
将Microsoft.TeamFoundationServer.ExtendedClient包更新到最新版本, GetFullDefinitionsAsync 方法应返回存储在触发器属性而非Schedules属性中的计划信息。