Jenkinsfile und verschiedene Strategien für Branchen

Ich versuche, die Jenkins-Datei für alle unsere Builds in Jenkins zu verwenden, und habe folgendes Problem. Wir haben im Grunde 3 Arten von Builds:

Pull-Request Build - Wird nach der Codeüberprüfung zum Master zusammengeführt und funktioniert der Buildmanueller Pull-Request-Build - ein Build, der wie oben beschrieben ausgeführt wird, jedoch vom Benutzer manuell ausgelöst werden kann (z. B. für den Fall, dass ein instabiler Test vorliegt).eine anfängliche kontinuierliche Bereitstellungspipeline - hiermit wird der Code erstellt, im Repository bereitgestellt, Artefakte aus dem Repository auf dem Zielserver installiert und die Anwendung dort gestartet.

Wie soll ich alle oben genannten Builds in einem einzigen Jenkinsfile enthalten. Momentan habe ich nur die Idee, einen Riesen zu machen, wenn dieser prüft, um welchen Zweig es sich handelt, und die Schritte ausführt.

So habe ich zwei Fragen:

1. Ist das in Jenkinsfile der richtige Weg?

Wie erhalte ich den Namen des aktuell ausgeführten Zweigs im Jobtyp "Mehrfachzweig"?

Zur Referenz, hier ist mein aktuellesJenkinsfile:

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: Meinungsbasierte Frage entfernt

Antworten auf die Frage(12)

Ihre Antwort auf die Frage