Заметки консультанта

Шамрай Александр Владимирович

Posts Tagged ‘api’

Создание коллекции проектов TFS 2015 через API

Posted by Шамрай Александр на Декабрь 21, 2015

Для автоматизации создания коллекции проектов используется метод QueueCreateCollection через интерфейс ITeamProjectCollectionService, который формирует задачу на создание новой коллекции. Этот метод имеет следующие параметры:

QueueCreateCollection(string name /*Название*/, string description /*Описание*/, bool isDefault /*коллекция по умолчанию*/, string virtualDirectory /*виртуальная директория*/, TeamFoundationServiceHostStatus state /*состояние после создания*/, IDictionary<string, string> servicingTokens /*сервисные данные*/);

Если с простыми параметрами все понятно, то сложность заключается в получении сервисных маркеров для портала проектов и сервера отчетности. Для создания используются следующие ключи:

  • SharePointAction со значениями CreateSite или None
  • SharePointSitePath – относительный путь для сайтов SharePoint в коллекции
  • SharePointServer – ключ сервера SharePoint
  • ReportingAction со значениями CreateFolder или None
  • ReportFolder – относительный путь для отчетности коллекции
  • ReportServer – ключ сервера отчетности

Пример:

Dictionary<string, string> servicingTokens = new
Dictionary<string, string>();

servicingTokens.Add(«SharePointAction», «CreateSite»);

servicingTokens.Add(«SharePointSitePath», «sites/» + newCollectionName);

servicingTokens.Add(«ReportingAction», «CreateFolder

servicingTokens.Add(«ReportFolder», «/TfsReports/» + newCollectionName);

Данные серверов отчетности и сайтов SharePoint можно получить из сервисной задачи создания коллекции TFS, которая выполнялась ранее. Она имеет название «Microsoft.TeamFoundation.JobService.Extensions.Core.ServicingJobExtension». Получить ключи можно по следующему примеру:

TeamFoundationJobDefinition[] _jobs = _jobservice.QueryJobs();

IEnumerable<TeamFoundationJobDefinition> _job = from a in _jobs where a.ExtensionName == «Microsoft.TeamFoundation.JobService.Extensions.Core.ServicingJobExtension»
select a;

if (_job.Count() > 0)

{


TeamFoundationJobDefinition _createcollection = _job.ElementAt(0);


XmlNodeList _nodes = _createcollection.Data.SelectNodes(«ServicingTokens/KeyValueOfStringString»);


foreach (XmlNode _node in _nodes)

{


if (_node.FirstChild.Name == «Key» && _node.FirstChild.InnerText == «SharePointServer») servicingTokens.Add(_node.FirstChild.InnerText, _node.LastChild.InnerText);


if (_node.FirstChild.Name == «Key» && _node.FirstChild.InnerText == «ReportServer») servicingTokens.Add(_node.FirstChild.InnerText, _node.LastChild.InnerText);

}

}

Теперь осталось выполнить формирование задачи для создания новой коллекции:

ITeamProjectCollectionService _tpcService = _tfsc.GetService<ITeamProjectCollectionService>();

ServicingJobDetail _createJob = _tpcService.QueueCreateCollection(newCollectionName, «Collection from console app», false, string.Format(«~/{0}/», newCollectionName), TeamFoundationServiceHostStatus.Started, servicingTokens);

TeamProjectCollection tpc = _tpcService.WaitForCollectionServicingToComplete(_createJob);

Пример можно скачать здесь.

Реклама

Posted in Microsoft, Team Foundation Server, Visual Studio | Отмечено: , | Leave a Comment »

 
%d такие блоггеры, как: