Non sembra possibile avere un Jenkinsfile come buildstep in un progetto di multi-configurazione. Un Jenkinsfile viene utilizzato in un lavoro Pipeline che è anche un tipo di lavoro e Jenkins non supporta (facile) la conversione tra tipi di lavoro. Oltre a ciò, un buildstep implica che venga eseguito su un nodo particolare in uno slot executor. Un Jenkinsfile tuttavia viene valutato sul master e definisce sé stessi buildsteps (con le relative etichette di nodo) che sarebbero intrinsecamente in conflitto se fosse stato eseguito in un buildstep stesso.
È possibile attivare una pipeline tramite un processo di configurazione multipla e fornirla con i parametri del lavoro di configurazione multipla. (Ho anche usato il plugin grilletto parametrizzato per fare questo)
Il mio lavoro gasdotto ha due parametri di testo, label
e version
con un esempio Jenkinsfile che assomiglia a questo:
node(this.label){
println this.version
}
Il mio lavoro multi-configurazione ha il seguente configurazione:
- una consuetudine asse
version
con valori alpha beta gamma
e uno slave asse label
con un nodo selezionato
- Il buildstep "Trigger/chiamata si basa su altri progetti" per far scattare il mio lavoro pipeline con parametri predefiniti
version=${version}
e label=${label}
Questa configurazione porta al lavoro gasdotto essere chiamato 3 volte (come ho solo nodo selezionato) , ogni volta con una versione diversa e in esecuzione sulla mia etichetta specificata. Ecco uno dei tronchi:
[Pipeline] node
Running on master in /var/lib/jenkins/jobs/pipelinejob/workspace
[Pipeline] {
[Pipeline] echo
gamma
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Questa soluzione funziona se desideri solo per passare parametri a base di testo o nomi delle etichette. Sarà molto più complicato da usare se si vuole fare qualcosa come "costruire con jdks diversi". Spero che sia comunque utile.
Assegnare la taglia in genere significa accettare anche la risposta. – rbellamy