name: "CD"
description: "Build -> Push To ECR -> Deploy To AWS"
author: VelocityLight

inputs:
  PULUMI_ACCESS_TOKEN:
    required: true
    description: "pulumi token [environment variable]"
  PULUMI_CONFIG_PASSPHRASE:
    required: true
    description: "pulumi passphrase [environment variable]"
  AWS_ROLE_ARN:
    required: true
    description: "aws role arn [environment variable]"
  AWS_REGION:
    required: true
    description: "aws region [environment variable]"

  pulumi_dir:
    required: true
    description: "pulumi deploy stack under directory"
  pulumi_stack:
    required: true
    description: "pulumi deploy stack"

  ecr_repo:
    required: false
    description: "access to ECR repository if ecr_repo has value"
  eks_cluster:
    required: false
    description: "access to EKS cluster if eks_cluster has value"
  build_dir:
    required: true
    description: "build directory"
  build_arch:
    required: true
    description: "build architectures, if many split by ',' please"
  is_push:
    required: false
    description: "docker push or not"
    type: boolean
    default: false

outputs:
  domain:
    description: "The domain to receive test requests."

runs:
  using: "composite"

  steps:
    - name: Login AWS
      uses: ./cicd-core/components/aws/login
      id: login-aws
      with:
        AWS_ROLE_ARN: ${{ inputs.AWS_ROLE_ARN }}
        AWS_REGION: ${{ inputs.AWS_REGION }}
        ecr_repo: ${{ inputs.ecr_repo }}
        eks_cluster: ${{ inputs.eks_cluster }}

    - name: Build & Push
      uses: ./cicd-core/components/cd/build-push
      with:
        build_dir: ${{ inputs.build_dir }}
        build_arch: ${{ inputs.build_arch }}
        is_push: ${{ inputs.is_push }}
        tags: ${{ steps.login-aws.outputs.ecr_registry }}/${{ inputs.ecr_repo }}:${{ github.sha }}

    - name: Deploy
      uses: ./cicd-core/components/cd/deploy-with-pulumi
      with:
        PULUMI_ACCESS_TOKEN: ${{ inputs.PULUMI_ACCESS_TOKEN }}
        PULUMI_CONFIG_PASSPHRASE: ${{ inputs.PULUMI_CONFIG_PASSPHRASE }}
        pulumi_dir: ${{ inputs.pulumi_dir }}
        pulumi_stack: ${{ inputs.pulumi_stack }}
        pulumi-update-key-value: |
          [
            {"key":"image", "value":"${{ steps.login-aws.outputs.ecr_registry }}/${{ inputs.ecr_repo }}:${{ github.sha }}"}
          ]
      env:
        AWS_ROLE_ARN: ${{ inputs.AWS_ROLE_ARN }}
        AWS_REGION: ${{ inputs.AWS_REGION }}
