У меня есть файл jenkins, содержащий все шаги для сборки и развертывания новейшего кода на нашем промежуточном сервере. Теперь мне нужно изменить это, чтобы поддержать строительство для производства. Но сборка для производства может быть выполнена ТОЛЬКО вручную, и Jenkins не может запустить ее автоматически.
Итак, у меня есть две разные ветви: развивай и властвуй.
Развивающая ветвь будет использоваться для постройки и промежуточной ветки для производства. Для основной ветки мне нужно запустить конвейер вручную, а для развивающей ветви это можно сделать полностью автоматически (в фиксированное время дня).
Чтобы упростить модернизацию моего кода до рабочей версии, я хочу иметь только один jenkinsfile, который является копией друг друга в разных ветвях (поэтому рабочий jenkinsfile не может быть перезаписан с помощью jenkinsfile of development branch после объединения).
Как мне добиться этого в jenkinsfile?
Мой текущий файл jenkinsfile выглядит так:
pipeline {
agent any
stages {
stage('Build') {
steps {
bat 'mvn clean package -Dmaven.test.skip=true'
}
}
stage('Unit/Integration Test') {
parallel {
stage('All Tests') {
steps {
bat 'mvn verify'
}
}
}
}
stage('SonarQube analysis') {
when {
branch 'develop'
}
steps {
withSonarQubeEnv('SonarQube') {
bat 'mvn sonar:sonar'
}
}
}
stage("SonarQube Quality Gate") {
when {
branch 'develop'
}
steps {
timeout(time: 10, unit: 'MINUTES') {
script {
sleep 120
def qg = waitForQualityGate()
if (qg.status != 'OK') {
error "Pipeline aborted due to quality gate failure: ${qg.status}"
}
}
}
}
}
stage('Deploy Staging') {
parallel {
stage('Deploy APAC') {
when {
branch 'develop'
}
steps {
script {
build job: 'APAC Staging', parameters: []
}
}
}
stage('Deploy NASA') {
when {
branch 'develop'
}
steps {
script {
build job: 'NASA Staging', parameters: []
}
}
}
stage('Deploy EMEA') {
when {
branch 'develop'
}
steps {
script {
build job: 'EMEA Staging', parameters: []
}
}
}
}
}
}
post {
always {
cleanWs()
}
}
}