@Library('flexo-libs')_

// CHANGE THE FOLLLOWING ACCOUNTS WHEN FORKING
ACCOUNT_IDS = [
  "355334781110", // twitch-video-coreservices+metrics-prod-us-west-2
]

PROJECT_NAME = "statsite" // The name of the ECR Repo
JENKINS_ROLE = "jenkins-to-ecr-metrics-role" // The name of the IAM role that Jenkins can assume
AWS_REGION = 'us-west-2'

STATSITE_LOCAL_REPO = 'edge/statsite'
STATSITE_SHA_HASH = '8dd7750dbecee9ca5fa29469d9e223cbbcf687c3'
// CARBON_RELAY_LOCAL_REPO = 'edge/carbon-relay'
// CARBON_RELAY_VERSION = "0.12.0"

String repositoryURL(String account_id, String project_name) {
  return "${account_id}.dkr.ecr.${AWS_REGION}.amazonaws.com/${project_name}".toString()
}

def pushImages(ArrayList account_ids, String source, String project_name, String tag) {
  account_ids.each { account ->
    target = repositoryURL(account, project_name)

    sh "docker tag ${source} ${target}:${tag}"

    withAgentAWS(role: JENKINS_ROLE, roleAccount: account, region: AWS_REGION) {
      sh "\$(aws ecr get-login --region ${AWS_REGION} --no-include-email)"
      sh "docker push ${target}:${tag}"
    }
  }
}

pipeline {
  agent any

  options {
    disableConcurrentBuilds()
    timeout(time: 1, unit: 'HOURS')
    ansiColor('xterm')
    timestamps()
  }

  stages {
    stage('Build statsite docker image') {
      steps {
        sshagent(credentials: ['git-aws-read-key']) {
          sh "make docker-build-statsite STATSITE_SHA_HASH=${STATSITE_SHA_HASH}"
        }
      }
    }

    // stage('Build carbon-relay docker image') {
    //   steps {
    //     sh "docker build -t ${CARBON_RELAY_LOCAL_REPO} --build-arg CARBON_RELAY_VERSION=${CARBON_RELAY_VERSION} ./carbon-relay"
    //   }
    // }

    stage('Publish images to ECRs') {
      when {
        branch 'master'
      }

      steps {
        pushImages(ACCOUNT_IDS, STATSITE_LOCAL_REPO, PROJECT_NAME, STATSITE_SHA_HASH)
        // pushImages(ACCOUNT_IDS, CARBON_RELAY_LOCAL_REPO, 'carbon-relay', CARBON_RELAY_VERSION)
      }
    }
  }
}
