#!groovy

pipeline {
  agent any

  options {
    ansiColor('xterm')
    disableConcurrentBuilds()
  }

  parameters {
    listGitBranches branchFilter: '.*',
                    credentialsId: 'theorchard-ci-ssh-key',
                    defaultValue: 'refs/heads/develop',
                    name: 'APOLLO_GO_BRANCH',
                    quickFilterEnabled: true,
                    remoteURL: 'git@github.com:theorchard/apollo-go.git',
                    selectedValue: 'DEFAULT',
                    sortMode: 'NONE',
                    tagFilter: '*',
                    type: 'PT_BRANCH'
    choice(name: 'RELEASE_CHANNEL',
           choices: [
             'Please make a choice',
             'qa',
             'qa2',
             'dev',
             'dev2',
             'staging',
             'uat',
             'production'
           ],
           description: 'Expo channel')
    booleanParam defaultValue: false,
                 description: 'Make a development build for android',
                 name: 'FORCE_ANDROID_BUILD'
  }

  environment {
    APOLLO_GO_BRANCH  = "${params.APOLLO_GO_BRANCH.minus('refs/heads/')}"
  }

  stages {
    stage('Deploy') {
      stage('Info') {
        steps {
          script {
            currentBuild.description = """apollo-go: ${env.APOLLO_GO_BRANCH}/${params.RELEASE_CHANNEL}
              isAndroidBuild = ${params.FORCE_ANDROID_BUILD}
            """
          }
          echo "Apollo API branch: ${env.APOLLO_GO_BRANCH}"
        }
      }
      stage('Build: Apollo Go') {
        steps {
          build job: "ApolloGo/apollo-go/${env.APOLLO_GO_BRANCH}", parameters: [ string(name: 'RELEASE_CHANNEL', value: params.RELEASE_CHANNEL),  booleanParam(name: 'FORCE_ANDROID_BUILD', value: params.FORCE_ANDROID_BUILD) ]
        }
      }
    }
  }
}
