2014-04-02 6 views
5

Der Versuch, Umgebungsvariablen aus Go-Vorlagen zu referenzieren, aber ich denke nicht, dass es möglich ist? Ich kann nichts in der Dokumentation und in den Beispielen sehen, die ich durchgebraut habe, benutze Parameter reichlich, aber niemals eine Umgebungsvariable. Was ich möchte ist etwas wieKann ich in go templates auf Umgebungsvariablen verweisen?

<templates> 
<pipeline name="TestEcho"> 
    <stage name="Echo"> 
    <jobs> 
     <job name="Echo"> 
     <tasks> 
      <exec command="echo ${SOME_ENVIRONMENT_VARIABLE}"> 
      </exec> 
     </tasks> 
     </job> 
    </jobs> 
    </stage> 
</pipeline> 
<templates> 

Vielen Dank im Voraus!

Tim

+0

Sorry, Jungs. Falsches GO. Verwenden des ThoughtWorks GO-Produkts zum Erstellen von Pipelines. – TimmyD

Antwort

6

Ja, Sie können!

Sie sollten % SOME_ENVIRONMENT_VARIABLE% statt $ {SOME_ENVIRONMENT_VARIABLE} (auf einem Fenster Mittel) verwendet werden.

Ich vermute, Sie verwenden einen Windows-Agenten. Die Dokumentation von Thoughtworks ist Linux-orientiert, weshalb ihr Beispiel nicht für Sie funktioniert. Sie können alle Go Standard environment variables in Ihren Aufgaben verwenden.

Sie können Umgebungsvariablen:

  • Umwelt Ebene
  • die Pipeline-Ebene (Überschreibung Umgebung Ebene)
  • die Bühnenniveau (Override-Pipeline-Ebene)

Sie können Verwenden Sie alle diese Umgebungsvariablen in Ihrer Aufgabe:

<pipeline name="TestEcho"> 
    <stage name="Echo"> 
    <jobs> 
     <job name="Echo"> 
     <tasks> 
      <exec command="echo %SOME_ENVIRONMENT_VARIABLE%"> 
      </exec> 
     </tasks> 
     </job> 
    </jobs> 
    </stage> 
</pipeline> 

Sie können die Umgebungsvariable in der Umgebung Ebene gesetzt:

<environments> 
    <environment name="SomeEnvironment"> 
    <environmentvariables> 
     <variable name="SomeVariable"> 
     <value>SomeValue</value> 
     </variable> 
    </environmentvariables> 
    <pipelines> 
     <pipeline name="TestEcho" /> 
    </pipelines> 
    </environment> 
</environments> 

Sie die Umgebungsvariable in der Pipeline Ebene einstellen:

<pipeline name="TestEcho"> 
    <environmentvariables> 
    <variable name="SomeVariable"> 
     <value>SomeValue</value> 
    </variable> 
    </environmentvariables> 
    <stage name="Echo"> 
    <jobs> 
     <job name="Echo"> 
     <tasks> 
      <exec command="echo %SomeVariable%"> 
      </exec> 
     </tasks> 
     </job> 
    </jobs> 
    </stage> 
</pipeline> 

Sie die Umgebungsvariable auf der Stufe einstellen Ebene:

<pipeline name="TestEcho"> 
    <stage name="Echo"> 
    <jobs> 
     <job name="Echo"> 
     <environmentvariables> 
      <variable name="SomeVariable"> 
      <value>SomeValue</value> 
      </variable> 
     </environmentvariables> 
     <tasks> 
      <exec command="echo %SomeVariable%"> 
      </exec> 
     </tasks> 
     </job> 
    </jobs> 
    </stage> 
</pipeline> 

Sie können ein e überschreiben nvironment Variable:

<pipeline name="TestEcho"> 
    <environmentvariables> 
    <variable name="SomeVariable"> 
     <value>Value1</value> 
    </variable> 
    </environmentvariables> 
    <stage name="Echo"> 
    <jobs> 
     <job name="Echo"> 
     <environmentvariables> 
      <variable name="SomeVariable"> 
      <value>Value2</value> 
      </variable> 
     </environmentvariables> 
     <tasks> 
      <exec command="echo %SomeVariable%"><!-- Write Value2 --> 
      </exec> 
     </tasks> 
     </job> 
     <job name="Echo2"> 
     <tasks> 
      <exec command="echo %SomeVariable%"><!-- Write Value1 --> 
      </exec> 
     </tasks> 
     </job> 
    </jobs> 
    </stage> 
</pipeline> 

Source that helped me

+0

Funktioniert nicht für mich –

+0

Tom, kannst du mir mehr erzählen? Was hast du versucht? Wie ist deine Pipeline? Wie hast du deine Umgebungsvariable eingestellt? –

+0

Am Ende fand ich, dass ich auf $ VAR oder $ VAR verweisen konnte (aber nicht% VAR%, wie Sie vorschlagen) - aber nicht zwischen verschiedenen Phasen in der Pipeline, also hat es mir nicht viel gebracht trotzdem gut! –

2

Derzeit ist dies nicht möglich und nur Parameter verwiesen werden kann, mit der #{parameter_name} Syntax

+0

Danke für die Antwort. Ja, fand das auf die harte Tour! Am Ende macht uns das nicht zu sehr weh. Obwohl es mir sehr viel Schmerz bereitet hat, es zu versuchen! – TimmyD

+2

Sie liegen falsch. Dies ist möglich, indem Sie die Syntax% environment_variable_name% verwenden. –

1

Ja, das ist möglich. Sie müssen es nur als benutzerdefinierte Befehlsaufgabe ausführen, wobei /bin/bash als Befehl und -c als erster Parameter verwendet wird, um bash mitzuteilen, dass die Parameter erweitert werden sollen.

So würde Ihre Pipeline Config wie folgt aussehen:

<templates> 
<pipeline name="TestEcho"> 
    <stage name="Echo"> 
    <jobs> 
     <job name="Echo"> 
     <tasks> 
      <exec command="/bin/bash"> 
      <arg>-c</arg> 
      <arg>echo ${SOME_ENVIRONMENT_VARIABLE}</arg> 
      </exec> 
     </tasks> 
     </job> 
    </jobs> 
    </stage> 
</pipeline> 
<templates> 

Siehe hier für ähnliche: http://support.thoughtworks.com/entries/22628904-Custom-environment-variables-referencing-other-variables

Verwandte Themen