2015-10-16 14 views
5

TeamCity'de powershell kullanarak bir meta veri dosyası oluşturmak için bir meta runner oluşturmaya çalışıyordum ve farklı vcs rotaları üzerinde yineleme yapmanın bir yolu olup olmadığını merak ediyordum?TeamCity - powershell ile vcs köklerini yineleme

Benim Kod: ben teknik isimlerini bilmiyorum beri bir kök eklediğinizde

$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 

, kökleri isimleri tanımlayıcıları olma sonunda, zorlaştırır onlara tekrarlatacak kökler. Öyle gibi içlerinden yineleme istiyorum, İdeal

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

: İki vcs kökleri: Burada

bir örnek kullanım-durum

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

    $vcsArray += $vcsObject 
} 

Ama I görünüyor komutumdaki isimleri kodlamak zorundayım, bu yüzden şu anda bir kayıp yaşıyorum.

TeamCity, VCS yollarını, üzerinde yineleyebileceğim şekilde gösteriyor mu?

Teşekkür Alex

cevap

1

Tamam, gerçek bir TeamCity tecrübem yok, ama bir DİNLENME komutu vererek köklerinin listesini alabilirsiniz gibi görünüyor:

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

dönmelidir Kökler listesiyle bir XML yanıtı:

<?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> 

Bu ne arıyorsunuz?

Referanslar:

İlgili konular