2016-06-10 2 views
0

Ich habe einen TeamCity Metarunner, der zwei Läufer konsolidiert. Der erste Läufer macht eine Menge Powershell-Zeug, um die richtige Octopus-Version zum Einsatz zu bringen, und es funktioniert gut. Der zweite Läufer versucht das zu entfalten.Werte innerhalb eines TeamCity Metarunner übergeben

<build-runners> 
    <runner name="Get project release for current branch" type="jetbrains_powershell"> 
    <parameters> 
     <param name="jetbrains_powershell_bitness" value="x86" /> 
     <param name="jetbrains_powershell_execution" value="PS1" /> 
     <param name="jetbrains_powershell_minVersion" value="4.0" /> 
     <param name="jetbrains_powershell_script_code"><![CDATA[ 

#Do some powershell stuff here to get the right release 
$ProjectRelease="1.2.3.45" 
Write-Output "##teamcity[setParameter name='ProjectRelease' value='$ProjectRelease']" 
Start-Sleep -s 10 
]]></param> 
     <param name="jetbrains_powershell_script_mode" value="CODE" /> 
     <param name="teamcity.step.mode" value="default" /> 
    </parameters> 
    </runner> 
    <runner name="Deploy Project" type="octopus.deploy.release"> 
    <parameters> 
     <param name="octopus_additionalcommandlinearguments" value="--specificmachines=%AgentList%" /> 
     <param name="octopus_deployto" value="%Octopus.EnvironmentName%" /> 
     <param name="octopus_host" value="%system.Octopus-prod_ServerUrl%" /> 
     <param name="octopus_project_name" value="%ProjectName%" /> 
     <param name="octopus_releasenumber" value="%ProjectRelease%" /> 
     <param name="octopus_version" value="3.0+" /> 
     <param name="octopus_waitfordeployments" value="true" /> 
     <param name="secure:octopus_apikey" value="zxx318ab49dce685b0ae65d94a963ff326672f51fb87c685575c3b6ed4f6eb8a569" /> 
     <param name="teamcity.step.mode" value="default" /> 
    </parameters> 
    </runner> 
</build-runners> 

So können Sie% ProjectRelease% sehen bekommt auf 1.2.3.45, und dieser Wert kann dann in nachfolgenden Build Schritten verwendet werden - alle dort gut. Jedoch für den zweiten Läufer, auf der Linie:

<param name="octopus_releasenumber" value="%ProjectRelease%" /> 

% ProjectRelease% immer noch gleich dem Standardwert ist („To bestückt sein“ und nicht „1.2.3.45“). Wie kann ich diesen Wert an den Runner "Projekt bereitstellen" übergeben?

Antwort

1

OK, also habe ich eine Lösung gefunden, aber es ist irgendwie hacky.

von ProjectRelease zu Benennung env.ProjectRelease (und vergessen Sie nicht, es als Parameter hinzufügen) es ein Umgebungsparameter wird die in Echtzeit aktualisiert wird, und damit arbeiten.

Offenbar ist die Zeile:

Write-Output "##teamcity[setParameter name='ProjectRelease' value='$ProjectRelease']" 

... stellt nicht die Parameter, bis die gesamte Skript beendet ist. Bitte lassen Sie mich wissen, ob es eine elegantere Lösung als diese gibt!