pipeline {
  agent any

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

  parameters {
    string(name: 'DOCKER_IMAGE', defaultValue: '086679231553.dkr.ecr.us-east-1.amazonaws.com/chef-workstation:latest')
    string(name: 'SHARED_LIBRARIES_VERSION', defaultValue: 'master', description: 'The version of the Jenkins shared libraries to use. Can be a branch, tag, Git revision or PR ref (e.g. pull/PR_NUMBER/merge).')
  }

  stages {
    stage('Load Shared Libraries') {
      steps {
        library "jenkins-global-libraries@${params.SHARED_LIBRARIES_VERSION}"
      }
    }
    stage('AI PR Review') {
            when {
                not { branch 'master' }
            }
            steps {
                aiPullRequestReview()
            }
        }
  
    stage('Lint and Deploy') {
      when { 
        branch 'master' 
      }
      
      steps {
        withEcr {
          withSecrets(awsAccountId: '086679231553', awsRole: 'shared-chef-workstation-deploy-role', secrets: [
            [id: 'shared/chef-workstation/CLIENT_KEY', environmentVariable: 'CLIENT_KEY'],
          ]) {
            sh label: 'chef_repo_upload',
            script: """
              docker run --rm \
                -v \"\$(pwd):/repository\" \
                -w /repository \
                -e CLIENT_KEY \
                ${params.DOCKER_IMAGE} \
                ./chef_repo_upload.sh ${env.GIT_PREVIOUS_SUCCESSFUL_COMMIT} ${env.GIT_COMMIT}
            """
          }
        }
      }
    }
  }
}
