Galera, hoje a pipeline está disparando quando é feito merge em qualquer branch. Estou usando generic webhook e chamando pelo bitbucket.
quero adicionaro conceito de GitFlow para a pipeline.
Essa é a pipeline.
pipeline {
agent any
stages {
stage('Checkout') {
steps {
// Este step fará o checkout do código fonte do repositório configurado no Jenkins
git branch: 'develop', url: "ssh://git@servidor.domain.ad:7999/ap/repositorio.git"
}
}
stage('Build') {
steps {
// Este step irá executar o MSBuild para compilar a aplicação ExtractorTools.sln
bat '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\BuildTools\\MSBuild\\Current\\Bin\\MSBuild.exe" ExtractorTools.sln /p:Configuration=Debug'
}
}
stage('Backup xx') {
//Este step cria um backup da pasta "binFolder" e copia seu conteúdo para uma nova pasta com um nome que inclui a data e hora do backup.
steps {
bat '''
@echo off
setlocal
set binFolder={caminho}
for /f "usebackq tokens=1-4 delims=/ " %%a in (`echo %date%`) do set currentDate=%%c-%%b-%%a
for /f "usebackq tokens=1-2 delims=: " %%a in (`echo %time%`) do set currentTime=%%a-%%b
set backupFolder=%binFolder%-bkp_%currentDate%-%currentTime%
xcopy /E /I %binFolder% %backupFolder%
echo Backup criado em %backupFolder%
'''
}
}
stage('Backup xx') {
//Este step cria um backup da pasta "binFolder" e copia seu conteúdo para uma nova pasta com um nome que inclui a data e hora do backup.
steps {
bat '''
@echo off
setlocal
set binFolder={caminho}
for /f "usebackq tokens=1-4 delims=/ " %%a in (`echo %date%`) do set currentDate=%%c-%%b-%%a
for /f "usebackq tokens=1-2 delims=: " %%a in (`echo %time%`) do set currentTime=%%a-%%b
set backupFolder=%binFolder%-bkp_%currentDate%-%currentTime%
xcopy /E /I %binFolder% %backupFolder%
echo Backup criado em %backupFolder%
'''
}
}
stage('Removing "bin"') {
steps {
// Este step fará o a remoção da basta bin
bat 'RMDIR /S /Q {caminho}'
bat 'RMDIR /S /Q {caminho}'
}
}
stage('Deploy') {
steps {
// Este step fará o deploy da aplicação copiando os arquivos da pasta de saída da compilação para o servidor de deploy
bat 'xcopy {caminho} {caminho} /i /y /e'
bat 'xcopy {caminho} {caminho} /i /y /e'
}
}
}
// ----- POST ACTIONS ----- //
post {
// -- SEÇÃO ALWAYS --> toda action definida nesta section sempre será executada
always {
emailext body: "Execucao do job '${env.JOB_NAME}' concluido > ${env.BUILD_URL}", subject: "[Jenkins] Job: ${env.JOB_NAME} | Build: #${env.BUILD_NUMBER} | Build Status: ${currentBuild.result}", to: 'xxx@xxx.com', from: 'jenkins@xx.com', attachLog: true, compressLog: true
}
// -- SEÇÃO success --> executa somente em caso de SUCESSO da pipeline
success {
echo "Build do job '${env.JOB_NAME}' concluido com sucesso!"
emailext body: "Execucao do job '${env.JOB_NAME}' concluido com sucesso! > ${env.BUILD_URL}", subject: "[Jenkins] Job: ${env.JOB_NAME} | Build: #${env.BUILD_NUMBER} | Build Status: ${currentBuild.result}", to: 'xxx@xxx.com', from: 'jenkins@xxx.com', attachLog: true, compressLog: true
}
// -- SEÇÃO FAILURE --> executa somente em caso de FALHA da pipeline
failure {
script {
echo "Build do job '${env.JOB_NAME}' concluido com falhas"
emailext body: "Execucao do job '${env.JOB_NAME}' concluido com falhas > ${env.BUILD_URL}", subject: "[Jenkins] Job: ${env.JOB_NAME} | Build: #${env.BUILD_NUMBER} | Build Status: ${currentBuild.result}", to: 'xxx@xxx.com', from: 'jenkins@xx.com', attachLog: true, compressLog: true
}
}
}