Jenkinsfile и разные стратегии для филиалов

Я пытаюсь использовать файл Jenkins для всех наших сборок в Jenkins, и у меня возникла следующая проблема. У нас в основном есть 3 вида сборок:

сборка по запросу - он будет объединен с мастером после проверки кода, и если сборка работаетсборка по запросу вручную - сборка, которая выполняет те же действия, что и выше, но может запускаться пользователем вручную (например, в случае нестабильного теста)начальный конвейер непрерывной доставки - он создаст код, развернет его в хранилище, установит артефакты из хранилища на целевом сервере и запустит там приложение

Как я должен содержать все вышеперечисленные сборки в один Jenkinsfile. Прямо сейчас единственная идея, которую я имею, состоит в том, чтобы создать гиганта, если он проверит, какая это ветвь и сделает шаги.

Итак, у меня есть два вопроса:

1. Это подходящий способ сделать это в Jenkinsfile?

Как получить имя выполняемой в данный момент ветки в виде многоотраслевого задания?

Для справки, вот мой текущий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

РЕДАКТИРОВАТЬ: удален вопрос, основанный на мнении

Ответы на вопрос(6)

Ваш ответ на вопрос