Sto cercando di utilizzare il file Jenkins per tutte le nostre build in Jenkins e ho il seguente problema. Fondamentalmente abbiamo 3 tipi di build:Jenkinsfile e diverse strategie per le diramazioni
- estraibile richiesta Costruito - verrà unito al master dopo la revisione del codice, e se costruire opere
- manuale estraibile richiesta Costruito - una build che fa lo stesso sopra, ma può essere attivato manualmente dall'utente (ad esempio nel caso di test instabili)
- una pipeline di consegna continua iniziale: questo costruirà il codice, distribuirà nel repository, installerà le risorse dal repository sul server di destinazione e avvierà il applicazione lì
Come dovrei contenere tutte le build precedenti in un singolo Jenkinsfile. In questo momento l'unica idea che ho è quella di creare un gigante se questo controllerà quale ramo è e farà i passi.
Così ho due domande:
1. E 'in questo modo appropriato per farlo in Jenkinsfile?
- Come ottenere il nome del ramo attualmente in esecuzione nel tipo di lavoro multi-ramo?
Per riferimento, ecco la mia attuale Jenkinsfile
:
def servers = ['server1', 'server2']
def version = "1.0.0-${env.BUILD_ID}"
stage 'Build, UT, IT'
node {
checkout scm
env.PATH = "${tool 'Maven'}/bin:${env.PATH}"
withEnv(["PATH+MAVEN=${tool 'Maven'}/bin"]) {
sh "mvn -e org.codehaus.mojo:versions-maven-plugin:2.1:set -DnewVersion=$version -DgenerateBackupPoms=false"
sh 'mvn -e clean deploy'
sh 'mvn -e scm:tag'
}
}
def nodes = [:]
for (int i = 0; i < servers.size(); i++) {
def server = servers.get(i)
nodes["$server"] = {
stage "Deploy to INT ($server)"
node {
sshagent(['SOME-ID']) {
sh """
ssh ${server}.example.com <<END
hostname
/apps/stop.sh
yum -y update-to my-app.noarch
/apps/start.sh
END""".stripIndent()
}
}
}
}
parallel nodes
EDIT: parere rimosso domanda basata
Eventuali duplicati di [Jenkins multiramo gasdotto:? Qual è la variabile nome del ramo] (http://stackoverflow.com/questions/32789619/jenkins-multibranch-pipeline-what- is-the-branch-name-variable) –