def groovy

pipeline {
  agent none

  parameters {
    choice(name: 'MODE', choices: ['Release', 'Milestone'], description: 'The deploy mode'),
    string(name: 'MILESTONE_VERSION', defaultValue: 'MO', description: 'Only for milestone build')
  }

  stages {

    stage('Load groovy script') {
      agent any
      stages {
        stage('Checkout') {
          steps {
            checkout scm
            script {
              groovy = load('releng/Jenkinsfile.groovy')
            }
          }
        }
      }
    }

    stage('Launch agent') {
      agent {
        kubernetes {
          label 'rcptt-build-agent'
          yaml "${env.YAML_BUILD_AND_DEPLOY_AGENT}"
        }
      }
      stages {
        stage('Start Build and Test') {
          steps {
            script {
              groovy.build_and_test()
            }
          }
        }
        stage('Deploy') {
          steps {
            script {
              groovy.deploy(params.MODE, params.MILESTONE_VERSION)
            }
          }
        }
      }
      post {
        always {
          script {
            groovy.post_build_actions()
          }
        }
      }
    }

  }
}