#!groovy
@Library('infraLib') _

pipeline {
  agent {
    label 'linux-agents'
  }
  options {
    ansiColor('xterm')
    disableConcurrentBuilds()
  }
  environment {
    AWS_PROFILE  = "gdb-infra-dev"
    NPM_RW_USER  = 'npm-rw'
    NPM_RW_PASS  = utility.getSecretValueById('infra/jenkins/nexus/npm_rw_pass', 'gdb-delphi-dev')
    NEXUS_AUTH   = sh returnStdout: true, script: "set +x; echo -n '${env.NPM_RW_USER}:${env.NPM_RW_PASS}' | openssl base64 | tr -d '\n'"
    ECR_REGISTRY = '483193324480.dkr.ecr.us-east-1.amazonaws.com'
  }
  stages {
    stage('Build') {
      steps {
        echo "Set credentials for publish"
        sh "set +x; sed -i 's/%BASE64STRING%/${env.NEXUS_AUTH}/' .npmrc"
        sh "aws ecr get-login-password | docker login --username AWS --password-stdin https://${env.ECR_REGISTRY}"
        sh "docker build -t ${env.ECR_REGISTRY}/gdb-web-shared-components:dependencies --target dependencies . "
      }
    }
    stage('Lint') {
      steps {
        sh "docker build -t ${env.ECR_REGISTRY}/gdb-web-shared-components:test --target lint . "
        sh "docker build -t ${env.ECR_REGISTRY}/gdb-web-shared-components:test --target lint-style . "
      }
    }
    stage('Test') {
      steps {
        sh "docker build -t ${env.ECR_REGISTRY}/gdb-web-shared-components:test --target test . "
      }
    }
    stage('Publish'){
      when { branch 'master' }
      stages {
        stage('Package') {
          steps {
            sh "docker build -t ${env.ECR_REGISTRY}/gdb-web-shared-components:package --target package . "
          }
        }
        stage('StoryBook') {
          steps {
            sh "docker build -t ${env.ECR_REGISTRY}/gdb-web-shared-components:storybook --target storybook . "
            sh "docker push ${env.ECR_REGISTRY}/gdb-web-shared-components:storybook"
            sh "aws ecs update-service --force-new-deployment --cluster dev-infra-clu --service dev-infra-storybook"
          }
        }
      }
    }
  }
}
