2015-10-16 4 views
5

Я пытался создать мета-бегун для создания файла метаданных с помощью powershell в TeamCity, и мне было интересно, есть ли способ перебирать разные маршруты vcs?TeamCity - итерация vcs корней с powershell

Мой код:

$fileName = "metadata.json" 

$vcsArray = @() 
for ($i = 0; $i -le 5; $i++) 
{ 
    $vcsObject= @{ 
     "VCSNumber"="%build.vcs.number.Proj_App_TcTestApp%" 
    } 
$vcsArray += $vcsObject 
} 
    $content = @{ 
     "TeamCityBuildLogUrl" = "http://teamcity.hps.com/viewLog.html?buildId=%teamcity.build.id%&tab=buildResultsDiv&buildTypeId=%system.teamcity.buildType.id%"; 
     "TeamCityProjectName" = "%system.teamcity.projectName%"; 
     "TeamCityBuildNumber" = "%system.build.number%"; 
     "BuildDateGenerated" = (Get-Date).ToString(); 
     "TeamCityExecutionAgentName" = "%teamcity.agent.name%"; 
     "VCSes" = $vcsArray 
    } 
} 

$content = $content | Add-Member @{"VCS Version2" = "testValue"} -PassThru # How to add more members dynamically. 
$content = ConvertTo-JSON $content 

New-Item $fileName -type file -force -value "// Metadata file generated by TeamCity`n" 
Add-Content $fileName $content 

cat $fileName # Test afterwards 

Когда я добавляю еще один корень, имена корней в конечном итоге становится идентификаторы, что делает его трудно перебирать их, так как я не знаю, технически Именами корнеплоды.

Вот пример использования случая: У меня есть два VCS корня:

%build.vcs.number.Proj_App_TcTestFW% 
%build.vcs.number.Proj_App_TcTestApp% 

В идеале, я хотел бы перебирать их, как так:

$vcsArray = @() 
foreach ($vcsRoot in vcsRoots) 
{ 
    [email protected]{ 
     "VCSName"= $vcsRoot; 
     "VCSNumber"= "%build.vcs.number." + $vcsRoot% 
    } 

    $vcsArray += $vcsObject 
} 

Но мне кажется, что я придется жестко указывать имена в моем сценарии, поэтому я сейчас в недоумении.

Разделяет ли TeamCity маршруты VCS таким образом, чтобы я мог перебирать их?

Благодаря Alex

ответ

1

Хорошо, я не имею фактический опыт Teamcity, но это выглядит, как вы можете получить список корней с помощью команды REST:

Invoke-WebRequest -Uri 'http://teamcity.hps.com/httpAuth/app/rest/vcs-roots' -Method Get 

, который должен вернуться XML-ответ со списком корней:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<vcs-roots count="1"> 
    <vcs-root id="TestProject1_TestProject1perforce" 
       name="test-project1-perforce" 
       href="/httpAuth/app/rest/vcs-roots/id:TestProject1_TestProject1perforce"/> 
</vcs-roots> 

Это вы что ищем?

Ссылки:

Смежные вопросы