/*
  1. added 
     client_max_body_size 0;
     to avoid 413 error
*/

node {
  def app
  def registryAddress
  def registryCredential
  try {
    // environment {
      registryAddress = "000-sidali.kemdiktisaintek.go.id"
      registryCredential = 'DockerRegistry-ID'
    // }

    stage('Checkout') {
      checkout scm
    }
	
    stage('Initialize'){
      def dockerHome = tool 'myDocker'
      env.PATH = "${dockerHome}/bin:${env.PATH}"
    }
	
    stage('Environment') {
      sh 'git --version'
      echo "Branch: master"
      sh 'docker -v'
      sh 'printenv'
      sh 'docker-compose -v'
    }
	
    stage('Test Build'){
     sh 'docker build -t ptb-be -f dockerfile .'
    }
	
    stage('Build Deploy '){
        docker.withTool("myDocker"){
            docker.withRegistry("https://${registryAddress}", registryCredential) {

                def dockerImage = docker.build("ptb-be:${env.BUILD_ID}")

                /* Push the container to the custom Registry */
                dockerImage.push()
                dockerImage.push('latest')

                def imageName = "${registryAddress}/ptb-be:latest"
                def composeDir = '/workdir/production'

                sh "docker pull ${imageName}"

                sh "docker stop ptb-Backend"
                sh "docker rm ptb-Backend"

                sh """cd ${composeDir} && 
                      docker-compose stop ptb-be && 
                      docker-compose rm -f ptb-be && 
                      docker-compose up -d ptb-be"""

                echo "Deploy completed successfully"
            }
        }
     }
  }
  catch (err) {
    throw err
  }
}