2014-04-02 6 views
5

Cercando di fare riferimento a variabili d'ambiente da modelli di go ma non credo sia possibile? Non vedo nulla nella documentazione e gli esempi che ho trovato attraverso i parametri di utilizzo in abbondanza, ma mai una variabile di ambiente. Quello che vorrei è qualcosa comesono in grado di fare riferimento a variabili di ambiente in go templates?

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

Grazie in anticipo!

Tim

+0

Scusate ragazzi. GO sbagliato. Utilizzo del prodotto GO di ThoughtWorks per la creazione di pipeline. – TimmyD

risposta

6

Sì, è possibile!

Si dovrebbe usare % SOME_ENVIRONMENT_VARIABLE% invece di $ {} SOME_ENVIRONMENT_VARIABLE (su un finestre agente).

Immagino che tu stia usando un agente Windows. La documentazione di Thoughtworks è focalizzata su Linux, motivo per cui il loro esempio non funziona per te.

È possibile utilizzare tutte le Go Standard environment variables nelle attività.

È possibile impostare le variabili di ambiente in:

  • l'ambiente livello di
  • il livello di pipeline (livello di ambiente override)
  • il livello di fase (livello gasdotto di override)

Puoi utilizzare tutte quelle variabili di ambiente nell'attività:

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

È possibile impostare la variabile d'ambiente a livello di ambiente:

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

È possibile impostare la variabile d'ambiente a livello gasdotto:

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

È possibile impostare la variabile d'ambiente in fase di livello:

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

È possibile eseguire l'override di una e nvironment variabile:

<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

Non funziona per me –

+0

Tom, puoi dirmi di più? Cosa hai provato? Come è la tua pipeline? Come hai impostato la tua variabile di ambiente? –

+0

Alla fine ho scoperto che ero in grado di riferirmi a variabili d'ambiente usando $ {VAR} o $ VAR (ma non% VAR% come suggerisci) - ma non tra diverse fasi nella pipeline, quindi non mi ha fatto molto bene comunque! –

2

Attualmente, questo non è possibile e solo parametri è possibile fare riferimento, utilizzando la sintassi di #{parameter_name}

+0

Grazie per la risposta. Sì, ho trovato questo nel modo più duro! Alla fine non ci provoca troppa pena che sia così. Anche se mi ha causato molto dolore cercando di farlo accadere! – TimmyD

+2

Ti stai sbagliando. Questo è possibile, usando la sintassi% environment_variable_name%. –

1

Sì, questo è possibile. Hai solo bisogno di eseguirlo come comando personalizzato, usando /bin/bash come comando e -c come primo parametro per dire a bash di espandere i parametri.

Così il vostro config gasdotto sarebbe simile a questa:

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

Vedi qui per simili: http://support.thoughtworks.com/entries/22628904-Custom-environment-variables-referencing-other-variables

Problemi correlati