2013-03-19 2 views
19

IMO, questo caso d'uso deve essere esplicitamente indicato nella pagina web/documentazione del plugin.Jenkins: Come si usa il plugin di trigger parametrizzato e si passa una revisione di subversion?

Diciamo che ho un progetto denominato U per upstream e D per downstream. Quando U finisce di costruire, voglio che D controlli la stessa revisione che U ha appena creato. U effettuerà sempre il checkout HEAD.

Ecco che cosa ho fatto:

  1. In U, ho aggiunto un "post-generazione Azioni" per "costruire con parametri Trigger su altri progetti".
  2. Per "Progetti da compilare" Ho digitato in D e per costruire solo quando "Stabile".
  3. Ho aggiunto un trigger per "Reverse Subversion".
  4. ho salvato questa configurazione

Ora io non so cosa dovrei fare dopo, ma non ottengo alcuna valutazioni per indicare questo sta lavorando. Infatti, even this testcase that's committed to the plugin source suggerisce che questo è tutto quello che dovrei fare.

Ma, se dovessi indovinare, penserei che dovrei contrassegnare U come una configurazione parametrizzata e aggiungere un parametro ad esso. Questo parametro dovrebbe essere chiamato ciò che U invia a D. Ma, se ho l'idea giusta, non so cosa dovrei chiamare questo parametro. Né il log della console di D né il log della console di U menziona alcun nuovo parametro.

Ho fatto un'ipotesi e ho creato un parametro String in U denominato "SVN_REVISION" e l'ho impostato su -1, ma ciò non ha avuto alcun effetto. Ogni volta che D attiva una build, SVN_REVISION è impostato su -1.


Questa è l'uscita di correre export sul progetto D:

+ export 
export BUILD_ID="2013-03-20_09-48-32" 
export BUILD_NUMBER="4522" 
export BUILD_TAG="jenkins-D-4522" 
export BUILD_URL="http://my.jenkins.server.com:8081/job/D/4522/" 
export EXECUTOR_NUMBER="2" 
export HUDSON_COOKIE="8ec52f7a-d60d-4640-83a9-dbed7351b32a" 
export HUDSON_HOME="/opt/hudson" 
export HUDSON_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949" 
export HUDSON_URL="http://my.jenkins.server.com:8081/" 
export JAVA_HOME="/opt/java" 
export JENKINS_HOME="/opt/hudson" 
export JENKINS_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949" 
export JENKINS_URL="http://my.jenkins.server.com:8081/" 
export JOB_NAME="D" 
export JOB_URL="http://my.jenkins.server.com:8081/job/D/" 
export LANG="en_US.UTF-8" 
export LD_LIBRARY_PATH="/opt/jdk1.6.0_30/jre/lib/i386/server:/opt/jdk1.6.0_30/jre/lib/i386:/opt/jdk1.6.0_30/jre/../lib/i386" 
export M2="/opt/maven/bin" 
export M2_HOME="/opt/maven" 
export MAVEN_OPTS="-Xms256m -Xmx512m" 
export NHINC_PROPERTIES_DIR="/opt/nhinc/Properties" 
export NLSPATH="/usr/dt/lib/nls/msg/%L/%N.cat" 
export NODE_LABELS="master" 
export NODE_NAME="master" 
export OLDPWD 
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/opt/java/bin:/opt/apache-ant-1.8.1/bin:/usr/local/bin:/opt/maven/bin" 
export PWD="/opt/hudson/jobs/D/workspace" 
export SHLVL="2" 
export SVN_REVISION="24186" 
export SVN_URL="https://a/url/trunk" 
export TERM="xterm" 
export WORKSPACE="/opt/hudson/jobs/D/workspace" 
export XFILESEARCHPATH="/usr/dt/app-defaults/%L/Dt" 
export _="/opt/java/bin/java" 

Così sembra che ha una variabile d'ambiente SVN_REVISION. Ma non penso che provenga necessariamente dal plugin. La mia prova viene dalla descrizione del "URL Repository" a Jenkins:

durante la costruzione, numero di revisione del modulo che è stato estratto è disponibile attraverso l'ambiente SVN_REVISION variabile, a condizione che si sta solo controllando fuori un modulo. Se sono stati estratti più moduli , utilizzare il comando svnversion. Se sono stati estratti più moduli , è possibile utilizzare il comando svnversion per ottenere le informazioni di revisione oppure utilizzare le variabili di ambiente SVN_REVISION_, dove è un indice basato su 1 che corrisponde alle posizioni configurate. Gli URL sono disponibili tramite le variabili d'ambiente SVN_URL_ simili.

Ma supponiamo che questo sia impostato da U al posto di D. Come faccio a usare D o come faccio a sapere che lo sta usando quando D viene attivato?


Lasciatemi fare una domanda che probabilmente dovrò chiedere dopo. Una volta che conosco il nome del parametro che devo usare, come posso modificare la configurazione di D in modo che controlli quella revisione?Devo modificare "URL del repository" per mettere un @${PARAMETER_NAME} alla fine o qualcosa del genere?

+1

Ultimo paragrafo: 'come modifico la configurazione di U in modo che ...'. Dovrebbe essere D invece di U? –

+1

@BradCupit buona cattura. Modificato –

risposta

3

Risulta, like the test case says, questo era tutto ciò che dovevo fare. L'ho provato impegnandomi con U, quindi ho eseguito nuovamente il commit mentre stava costruendo. Una volta che D ha iniziato a costruire, ha afferrato il primo commit, non l'ultimo. È così che ho provato che funzionava.

Un feedback migliore sarebbe apprezzato, ma almeno so che funziona.

5

Non so perché il parametro "Revisione di Subversion" non funzioni (vedere suggerimento per la risoluzione dei problemi di seguito), ma provare ad aggiungere il parametro manualmente in "Trigger parametrizzato su altri progetti" con il menu a discesa "Aggiungi parametro". Il più semplice potrebbe essere aggiungere "Parametri di configurazione correnti".

È anche possibile specificare i parametri desiderati, con i valori che desiderate con "parametri predefiniti", probabilmente come questo:

SVN_REVISION=${SVN_REVISION} 

Marcatura D come parametrizzato non dovrebbe essere necessario, che significa semplicemente che puoi specificare i parametri con i valori predefiniti e fare in modo che Jenkins chieda i parametri quando la build viene attivata manualmente. Ma tutto ciò che pianifica una nuova build (come fa il plug-in di trigger parametrizzato) può sempre aggiungere qualsiasi parametro a quella build, indipendentemente da come è configurato il lavoro.


Risoluzione dei problemi suggerimento: aggiungere un passaggio di generazione per scaricare le variabili di ambiente (che dovrebbero avere tutti i parametri di costruzione troppo) nella build innescato. È più semplice aggiungere "Esegui shell"/"Esegui comando batch di Windows" con il comando per eseguire il dump dell'ambiente (export con shell unix, set con Windows).

Quindi dall'output della console di generazione, verificare se i parametri sono come dovrebbero (esistono e hanno i valori corretti).

+0

È bello conoscere la prima sezione del tuo paragrafo. Fondamentalmente stai confermando ciò che il caso di test implica: non ho bisogno di modificare D per farlo funzionare. –

+0

Controlla la mia modifica in alto. Ho aggiunto il risultato di "export" –