0

最新のコードをビルドしてステージング サーバーにデプロイするためのすべての手順を含む 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()
        }
    }
}
4

1 に答える 1