2015-10-16 6 views
5

मैं टीमसिटी में पावरहेल का उपयोग करके मेटाडेटा फ़ाइल उत्पन्न करने के लिए मेटा-धावक बनाने की कोशिश कर रहा था और मैं सोच रहा था कि अलग-अलग वीसीएस मार्गों पर फिर से प्रयास करने का कोई तरीका है या नहीं?टीमसिटी - शक्तियों के साथ 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 

जब मैं एक और जड़ जोड़ने के लिए, जड़ों के नाम अंत पहचानकर्ता बनने, जो यह कठिन बना देता है उन पर पुनरावृति करने के बाद से मैं तकनीकी रूप से के नाम पता नहीं है जड़ों।

यहाँ एक उदाहरण यूज-केस है: मैं दो 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 
} 

लेकिन यह है कि मैं लगता है मेरी लिपि में नामों को हार्डकोड करना है, इसलिए मैं वर्तमान में एक नुकसान में हूं।

क्या टीमसिटी वीसीएस मार्गों को इस तरह से उजागर करता है कि मैं उन पर पुन: प्रयास कर सकता हूं?

धन्यवाद एलेक्स

उत्तर

1

ठीक है, मैं एक वास्तविक TeamCity अनुभव की जरूरत नहीं है, लेकिन जैसे आप एक बाकी आदेश जारी करके जड़ों की एक सूची प्राप्त कर सकते हैं यह लग रहा है:

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

जो लौट जाना जड़ों की सूची के साथ एक एक्सएमएल responce:

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

क्या आप यही देख रहे हैं?

संदर्भ:

संबंधित मुद्दे