#!/usr/bin/env groovy

// Jenkins uses this role to upload artifacts into that account
def jenkinsUploadAssumeRoleName = "es-index-lifecycle-artifacts-jenkins-upload"
def jenkinsUploadAssumeRoleAccount =  "147030575244"
def artifactsBucketName = "es-index-lifecycle-artifacts"

pipeline {
    agent any
    options {
        timeout(time: 20, unit: 'MINUTES')
        timestamps()
        ansiColor('xterm')
    }

    environment {
        AWS_DEFAULT_REGION = 'us-west-2'
    }

    stages {
        stage('Test') {
            steps {
                sh 'docker run --rm -v "$PWD":/go/src/code.justin.tv/qe/es_index_lifecycle -w /go/src/code.justin.tv/qe/es_index_lifecycle -e GOOS=linux golang:1.13 go test -v'
            }
        }

        stage('Build') {
            steps {
                sh 'docker run --rm -v "$PWD":/go/src/code.justin.tv/qe/es_index_lifecycle -w /go/src/code.justin.tv/qe/es_index_lifecycle -e GOOS=linux golang:1.13 go build -v -o es_index_lifecycle'
            }
        }

        stage('Upload Production Artifacts') {
            when {
                branch 'master';
            }
            steps {
                withAWS(role: jenkinsUploadAssumeRoleName, roleAccount: jenkinsUploadAssumeRoleAccount, region: "us-west-2") {
                    sh """
                    |zip es_index_lifecycle.zip es_index_lifecycle
                    |aws s3 cp es_index_lifecycle.zip s3://${artifactsBucketName}/ --acl bucket-owner-full-control
                    """.stripMargin()
                }
            }
        }
    }
}
