#!groovy

import groovy.transform.Field

@Field
def pulumiPod = '''
apiVersion: v1
kind: Pod
spec:
  containers:
  - name: main
    image: pulumi/pulumi:v3.3.1
    command:
    - cat
    tty: true
    resources:
      requests:
        memory: "2000Mi"
        cpu: 1000m
      limits:
        memory: "4000Mi"
        cpu: 1000m
    env:
    - name: AWS_WEB_IDENTITY_TOKEN_FILE
      value: /identity/token
    volumeMounts:
    - mountPath: /identity
      name: identity
  - name: auth
    image: gcr.io/pingcap-gardener/jenkins/gcp-web-identity:20201201
    env:
    - name: AWS_WEB_IDENTITY_TOKEN_FILE
      value: /identity/token
    volumeMounts:
    - mountPath: /identity
      name: identity
  volumes:
  - emptyDir: {}
    name: identity
  restartPolicy: Never
'''

pipeline {
  agent {
    kubernetes {
      yaml pulumiPod
      defaultContainer "main"
    }
  }

  options {
    disableConcurrentBuilds()
  }
  environment {
    PULUMI_ACCESS_TOKEN = credentials("dbaas-pulumi-access-token")
    PULUMI_CONFIG_PASSPHRASE = credentials("dbaas-dev-pulumi-pwd")
    GITHUB_BOT = credentials("github-sre-bot")
  }
  stages {
    stage('Setup') {
      steps {
        sh """
        """
      }
    }
  }
}

def sendNotification(String CHANNEL, String STATUS, String ENV) {
  def GIT_AUTHOR_NAME = sh(returnStdout: true, script: "git log -1 --pretty=format:'%an'").trim()
  def slackmsg = "[<${env.RUN_DISPLAY_URL}|Deploy Infra API to ${ENV}>] `${STATUS}`" + "\n" +
    "Branch: `${env.GIT_BRANCH}`, Authored by: `${GIT_AUTHOR_NAME}`"
  def COLOR = 'good'
  if (STATUS != "SUCCESS") {
    COLOR = 'danger'
  }
  slackSend channel: CHANNEL, color: COLOR, teamDomain: 'pingcap', tokenCredentialId: 'slack-pingcap-token', message: "${slackmsg}"
}
