2015-10-16 7 views
5

TeamCityでpowershellを使用してメタデータファイルを生成するメタランナーを作成しようとしていましたが、別のvcsルートを反復処理する方法があるのだろうかと思いました。TeamCity - powershellでvcsルーツを繰り返す

マイコード:

$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 

私は別のルートを追加すると、根の名前は、私は技術的に名を知らないので、それは難しいそれらを反復することができ、識別子、なってしまいますルーツ。 は、私は2つの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ルートを公開しますか? [OK]を

おかげ アレックス

答えて

1

は、私が実際にチームシティーの経験を持っていないが、あなたは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> 

これはあなたが探しているものですか?

参考文献:

関連する問題