TFS2012 с одним контроллером сборки 2010 года с одним агентом сборки 2010 года. Также есть один контроллер сборки 2012 года с несколькими агентами сборки 2012 года.Queuing TFS строит через PowerShell
У нас есть несколько сборок для нескольких версий нашего программного обеспечения. Строки называются в соответствии с соглашением, например. Foo_version_1_0 и Foo_version_2_0.
Когда я запускаю этот код на своей локальной машине, все сборки находятся в очереди. Когда я запускаю этот код вручную в агенте сборки 2012 года, сборки строятся в очереди. Когда я запускаю этот код вручную в агенте сборки 2010 года, никакие сборки не помещаются в очередь. Когда код выполняется как часть инициированной сборки в TFS (либо на контроллере/агенте 2010 или 2012 года), он не ставит в очередь любые сборки и ошибки с моим настраиваемым исключением, не говоря о определениях, возвращаемых из TFS.
Мои вопросы:
Является ли $ buildServer.QueryBuildDefinitions() функцию только функцию администратора? То есть если работает учетная запись пользователя, отличного от администратора (например, TFSService), она не сможет получить данные из TFS api?
Является ли $ buildServer.QueryBuildDefinitions() новой функцией, доступной только в 2012 году?
Есть ли другой способ сделать это, что будет работать? Раньше у нас были все имена для сборки, которые были жестко закодированы - это не жизнеспособный путь для нас.
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Client")
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.TeamFoundation.Build.Client")
$serverName="http://tfs:8080/tfs"
$tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($serverName)
$buildserver = $tfs.GetService([Microsoft.TeamFoundation.Build.Client.IBuildServer])
$buildServer.QueryBuildDefinitions("FooProject") | foreach {
if ($_.EndsWith("version_1_0"))
{
echo "Queueing build: $_.Name"
$buildServer.QueueBuild($buildServer.GetBuildDefinition("FooProject",$_.Name))
}
}
}
Edit: убрана $buildDefinitions = $buildServer.QueryBuildDefinitions("FooProject").Name
, заменил его $buildServer.QueryBuildDefinitions("FooProject") | foreach...
сборки теперь очередь программно.
Я обновил запрос - не повлиял на результат сценария. Нет сборки в очереди, когда сценарий PowerShell выполняется как часть сгенерированной/поставленной в очередь сборки. – Alicia
На самом деле это сработало :) – Alicia