Domanda

Questo sta iniziando a farmi impazzire .. Ma sembra che io abbia la fortuna di capirlo da me stesso: /

Ho bisogno di impostare un meccanismo per condividere il valore di stringa tra due slave, ad esempio, denominato Slave A e Slave B .

Attualmente più più vicino che ho trovato è questa così domanda: Jenkins Slave Ambiente Variabile Aggiorna

Ma mira ancora a consentire l'accesso in Buildscripts, non nella variabile dell'ambiente degli slaves. (relativo SO DOMANDA: Come vengono utilizzate le variabili dell'ambiente A Jenkins con comando Windows Batch? )

Attualmente ho questa configurazione:

1) su A Il lavoro A viene attivato.

Esegue questo codice batch di Windows (percorsi effettivi, ovviamente, vengono sostituiti con '<>'):

cmd /c start java -jar <path_of_slave>\slave.jar -jnlpUrl  <url_of_slave>/slave-agent.jnlp

setenv.exe /m HOR_BUILD_ID -delete
setenv.exe /m HOR_BUILD_ID %BUILD_NUMBER%
setenv.exe /m HOR_UPSTREAM_ID -delete
setenv.exe /m HOR_UPSTREAM_ID %JOB_NAME%
.

Abbastanza auto-esplicativo e diretto IMHO.

2) Il lavoro su A ha un lavoro a monte B , che viene attivato su Build di successo. Quindi, nello slave B La build B esegue questo codice batch (percorsi effettivi, ovviamente, vengono sostituiti con '<>'):

SetLocal EnableDelayedExpansion

@echo off
@echo --- Refreshing Environemnt variables... 
@echo on
set prgfil=%ProgramFiles(x86)%
call "%WORKSPACE%\..\..\..\tools\misc\resetvars.bat"
@echo --- Reading environment variables... 
copy /y "<path_containing_%HOR_UPSTREAM_ID%_variable" "<path_containing_%HOR_BUILD_ID%_variable"
if !errorlevel!==0 goto ok1
goto error
:ok1

goto end

:error
EndLocal
exit /b 1

:end
EndLocal
.

Nota: resetvars.bat e resetvars.vbs è prelevato da questa domanda così: Esiste un comando per aggiornare le variabili di ambiente dal prompt dei comandi in Windows?


.

L'output (% HOR_BUILD_ID% e% Valori HOR_UPSTREAM_ID%), ancora, è obsoleto ... Un solo modo per ottenere nuove variabili aggiornate è il riavvio del servizio Darn Jenkins (Master), ma questo è sicuramente no-go nel CI Ambiente ...

La domanda ora superfici - Come effettuare quelle variabili da aggiornare / leggere quando viene attivato quelle variabili B su B , quindi potrei accedere alle variabili di sistema Dalla slave w / o utilizzando, ad esempio, Envinject Plugin?


.

Un'altra domanda e risposta che necessitano di interazione dell'utente, quindi non accettabile nel mio caso: jenkins - passando le variabili tra i lavori?


.

Anche questo non funziona nel mio caso: http:// commenti.gmane.org/gmane.comp.java.hudson.user/37897


.

Forse lo slave e il suo nodo corrispondente non ricevono variabili / risolvere il suo ambiente fondamentale, causando essere in grado di recuperare le variabili globali dell'ambiente delle informazioni? Lo ha cecciato e improvvisamente alcuni interessanti Ambiente variabile Config Data Creat My Eye:

Node_labels | un prodreleases

Node_name | A

... Questo è per Slave B , ma dovrebbe essere valori diversi in quanto questo è originariamente per lo schiavo A ... che diavolo ????? ????????????? !!!! : /

Sto iniziando a sentire che il problema di root è che Jenkins ha un bug quando risolve più informazioni sui nodi slave.

ha deciso di creare un problema @ Jenkins Jira: https://issues.jenkins- ci.org/browse/jenkins-15397

È stato utile?

Soluzione

Hai esaminato l'aggiunta di un plug-in trigger parametrizzato?

https://wiki.jenkins-ci.org/display/Jenkins / parametrizzato + trigger + plugin

Questo dovrebbe consentire di passare i parametri dal primo lavoro al secondo (come il nome del lavoro da eliminare).

Altri suggerimenti

Credo che tu stia cercando Build parametrized Jenkins! Segui le istruzioni qui , e sarai sveglioe in esecuzione nel mese!

Sembra questo (https://issues.jenkins-ci.org/browse/jenkins-6604) Fix ha effettuato le seguenti modifiche:

    .
  • fissa la lastra per l'installazione di più di uno slave in Windows 2K8 (R2) X64 (datacenter) macchina;
  • fissa la lastrabilità per risolvere correttamente i valori.La configurazione non è stata modificata ... ma sembra che si rientri tutti gli accessi ha fatto il trucco.
  • Probobly ha rotto le impostazioni di Ambiente Strumento come Node_Labels e Node_Name non vengono caricati in configurazione delle informazioni di sistema più XD ... ma a chi importa finché questa configurazione funziona effettivamente (e non è rotta nel prossimo aggiornamento Jenkins ...):D

    Per riferimento, il problema Jira che ho creato è ancora aperto ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top