Jenkinsfile e diferentes estratégias para filiais

Estou tentando usar o arquivo Jenkins para todas as nossas compilações no Jenkins e tenho o seguinte problema. Basicamente, temos três tipos de compilações:

pull-request build - ele será mesclado para dominar após a revisão do código e se a build funcionarcompilação manual de solicitação de recebimento - uma compilação que faz o mesmo que acima, mas pode ser acionada manualmente pelo usuário (por exemplo, caso tenhamos algum teste instável)um pipeline de entrega contínuo inicial - isso criará o código, implementará no repositório, instalará artefatos do repositório no servidor de destino e iniciará o aplicativo lá

Como devo conter todos os itens acima em um único arquivo Jenkins. No momento, a única idéia que tenho é fazer um gigante se isso verificará qual é o ramo e fará as etapas.

Então, eu tenho duas perguntas:

1. Essa é a maneira apropriada de fazer isso no Jenkinsfile?

Como obter o nome da ramificação atualmente em execução no tipo de tarefa com várias ramificações?

Para referência, aqui está o meu atualJenkinsfile:

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: pergunta removida baseada em opinião