最新のコードをビルドしてステージング サーバーにデプロイするためのすべての手順を含む jenkinsfile があります。ここで、ビルドから本番環境へのビルドをサポートするために、これを変更する必要があります。ただし、本番環境へのビルドは手動でのみ行うことができ、Jenkins は自動的に開始することはできません。
したがって、develop と master という 2 つの異なるブランチがあります。開発ブランチはステージングへのビルドに使用され、マスター ブランチは本番環境へのビルドに使用されます。master ブランチの場合は手動でパイプラインを開始する必要があり、develop ブランチの場合は完全に自動で (1 日の決まった時間に) 実行できます。
コードを本番環境に簡単にアップグレードできるようにするために、異なるブランチで互いのコピーである jenkinsfile を 1 つだけ持つ必要があります (したがって、本番環境の jenkinsfile は、マージ後に開発ブランチの jenkinsfile で上書きできません)。
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()
}
}
}