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