Ситуация:
В настоящее время я работаю над автоматизацией конфигураций CI / CD через bitbucket -> vsts -> azure.
Мой идеальный результат - иметь возможность скопировать и вставить (или вручную ввести) мои значения конфигурации в соответствующие консольные программы и позволить приложениям настраивать все испытания CI / CD без необходимости щелкать по всем веб-интерфейсам. Теперь это возможно в Bitbucket и Azure, но создание конфигураций VSTS CI / CD с помощью REST API оказывается затруднительным.
Ресурсы Azure и конфигурации Bitbucket в настоящее время создаются с помощью простого консольного приложения .NET, которое взаимодействует с REST. API. Обычно скопируйте и вставьте (или введите вручную) все значения (входные значения azure / входные значения битбакета) в консольное приложение, и оно настроит все в течение 5 минут.
Проблема:
Теперь я столкнулся с более сложной частью попытки автоматизировать конфигурации сборки и конфигурации выпуска в VSTS. Документы Microsoft не очень хороши для документация клиентских библиотек VSTS.
Честно говоря, я не понимаю, как могу создать определение сборки через API или клиентскую библиотеку.
Файл BuildHttpClient имеет три метода, с которыми я могу работать:
public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, Guid project, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = null, CancellationToken cancellationToken = default(CancellationToken)); public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = null, CancellationToken cancellationToken = default(CancellationToken)); public virtual Task<BuildDefinition> CreateDefinitionAsync(BuildDefinition definition, string project, int? definitionToCloneId = null, int? definitionToCloneRevision = null, object userState = null, CancellationToken cancellationToken = default(CancellationToken));
BuildDefinition имеет следующие свойства.
namespace Microsoft.TeamFoundation.Build.WebApi { [DataContract] public class BuildDefinition : BuildDefinitionReference { public BuildDefinition(); public List<string> Tags { get; } public PropertiesCollection Properties { get; } public List<RetentionPolicy> RetentionRules { get; } public List<Demand> Demands { get; } public IDictionary<string, BuildDefinitionVariable> Variables { get; } public List<BuildTrigger> Triggers { get; } public ProcessParameters ProcessParameters { get; set; } public BuildRepository Repository { get; set; } public List<BuildOption> Options { get; } public List<BuildDefinitionStep> Steps { get; } public bool BadgeEnabled { get; set; } public int JobTimeoutInMinutes { get; set; } public BuildAuthorizationScope JobAuthorizationScope { get; set; } public string DropLocation { get; set; } public string Description { get; set; } public string Comment { get; set; } public string BuildNumberFormat { get; set; } public Build LatestBuild { get; } public Build LatestCompletedBuild { get; } } }
Как видите, наиболее важные свойства определения сборки доступны только для чтения.
Как мне создать определение сборки через REST API? Есть ли лучшие альтернативы VSTS, которые позволят мне это сделать?