pipeline {
  agent any
  environment {
    PYTHONUNBUFFERED = 'TRUE'
    SAGEMAKER_PROJECT_NAME_ID = """${sh(
      returnStdout: true,
      script: 'echo "${SAGEMAKER_PROJECT_NAME}-${SAGEMAKER_PROJECT_ID}"'
      ).trim()}"""
  }
  stages {
    stage('Build and Install') {
      steps {
        sh '''pip3 install --upgrade --force-reinstall --target $HOME/.local/$SAGEMAKER_PROJECT_NAME_ID . "awscli>1.20.30"'''
      }
    }
    stage('Update and Run Sagemaker Pipeline') {
      steps {
        withAWS(credentials:"${AWS_CREDENTIAL}",region:"${AWS_REGION}") {
          sh '''export PATH="$HOME/.local/$SAGEMAKER_PROJECT_NAME_ID/bin:$PATH"
          export PYTHONPATH="$HOME/.local/$SAGEMAKER_PROJECT_NAME_ID:$PYTHONPATH"
          run-pipeline --module-name pipelines.abalone.pipeline \
          --role-arn ${SAGEMAKER_PIPELINE_ROLE_ARN} \
          --tags "[{\\"Key\\":\\"sagemaker:project-name\\", \\"Value\\":\\"${SAGEMAKER_PROJECT_NAME}\\"}, {\\"Key\\":\\"sagemaker:project-id\\", \\"Value\\":\\"${SAGEMAKER_PROJECT_ID}\\"}]" \
          --kwargs "{\\"region\\":\\"${AWS_REGION}\\",\\"role\\":\\"${SAGEMAKER_PIPELINE_ROLE_ARN}\\",\\"default_bucket\\":\\"${ARTIFACT_BUCKET}\\",\\"pipeline_name\\":\\"${SAGEMAKER_PROJECT_NAME_ID}\\",\\"model_package_group_name\\":\\"${SAGEMAKER_PROJECT_NAME_ID}\\",\\"base_job_prefix\\":\\"${SAGEMAKER_PROJECT_NAME_ID}\\"}"'''

          echo "Create/Update of the SageMaker Pipeline and execution completed."
        }
      }
    }
  }
}
