Я создаю определение определения сборки, которое выводит результат [артефакт] из последней успешной сборки непрерывной интеграции и развертывает ее в более высокой среде. Это TFS 2015 поэтому я использую BuildHttpClient
TFS 2015 построить определение, чтобы найти местоположение артефакта другой сборки
VssConnection connection = new VssConnection(new Uri(accountUrl), new VssAadCredential());
var projectClient = connection.GetClient<ProjectHttpClient>();
var project = projectClient.GetProject("project.name").Result;
var buildClient = connection.GetClient<BuildHttpClient>();
var builds = buildClient.GetBuildsAsync(project.Id, maxBuildsPerDefinition: 1, ResultFilter: BuildResult.Succeeded).Result;
foreach (var build in builds)
{
if (build.Definition.Name == "CI BuildDefinition Name")
{
это где я пытаюсь прочитать путь к артефактам для этой сборки. но класс Build
не имеет свойства артефакта или артефакта.
Однако я нашел, что есть класс ArtifactResource
, который имеет Data
, который я могу использовать.
так что я пытаюсь сделать что-то вроде:
ArtifactResource art = buildClient.GetArtifactAsync...
string PathToArtifact =art.Data;
и мне не хватает его. Я также понимаю, что maxBuildsPerDefinition: 1
в builds
не кажется, не
работать, там нет ошибки компиляции, но то, что мне нужно делать, если я хочу последнюю успешную сборку?
Я настоятельно рекомендую обновить до версии TFS 2015 update 2 и использовать управление версиями с этим, так как он делает то, что вы пытаетесь реализовать. – jessehouwing
Спасибо, да, этот вариант есть и будет использоваться. Однако я также ищу решение на основе описанного выше подхода. – skundu