// see https://www.jenkins.io/doc/book/pipeline/syntax/
pipeline {
  agent any
  environment {
    CODING_DOCKER_REG_HOST = "${CCI_CURRENT_TEAM}-${CCI_DOCKER_REGISTRY_DOMAIN}"
    IMAGE_VERSION = "build-${env.CI_BUILD_NUMBER}"
    CODING_DOCKER_IMAGE_NAME = "${PROJECT_NAME.toLowerCase()}/${env.BRANCH_NAME == 'test'? 'test' : 'prod'}/${CCI_JOB_NAME}"
    IMAGE_FULL_NAME = "${CODING_DOCKER_REG_HOST}/${env.CODING_DOCKER_IMAGE_NAME}:${IMAGE_VERSION}"
  }

  stages {
    stage('检出Git') {
      when {
        anyOf {
          branch 'test';
          branch 'master'
        }
      }
      steps {
        checkout([$class: 'GitSCM', branches: [[name: env.GIT_BUILD_REF]], userRemoteConfigs: [[url: env.GIT_REPO_URL, credentialsId: env.CREDENTIALS_ID]]])
      }
    }

    stage('构建推送镜像') {
      when {
        anyOf {
          branch 'test';
          branch 'master'
        }
      }
      steps {
        script {
          docker.withRegistry(
            "${CCI_CURRENT_WEB_PROTOCOL}://${env.CODING_DOCKER_REG_HOST}",
            "${env.CODING_ARTIFACTS_CREDENTIALS_ID}"
          ) {
            docker.build("${env.CODING_DOCKER_IMAGE_NAME}:${IMAGE_VERSION}").push()
            sh "docker image rm ${env.IMAGE_FULL_NAME}"
          }
        }
      }
    }

    stage('测试环境部署') {
      when {
        anyOf {
          branch 'test'
        }
      }
      steps {
        sh 'curl https://api-spinnaker.devops.intlgame.com/webhooks/webhook/oit-erp-backend-test -X POST -H "content-type: application/json" -d \'{"parameters": {"image_tag": "\'"${IMAGE_VERSION}"\'"}}\''
        echo '部署已经触发，可以在Spinnaker查看状态: https://api-spinnaker.devops.intlgame.com'
      }
    }

    stage('正式环境自动部署') {
      when {
        anyOf {
          branch 'master'
        }
      }
      steps {
        script {
          sh 'curl https://api-spinnaker.devops.intlgame.com/webhooks/webhook/oit-erp-backend-prod -X POST -H "content-type: application/json" -d \'{"parameters": {"image_tag": "\'"${IMAGE_VERSION}"\'"}}\''
          echo '部署已经触发，可以在Spinnaker查看状态: https://api-spinnaker.devops.intlgame.com'
        }
      }
    }
  }
}