name: Build and push docker image
author: Jeff Kim & Bolt lee & Kyle Park
description: 'Build and push docker image'
inputs:
  repository:
    description: '' # Filled out description.
    required: true
    default: 'sample-repository'
  registry:
    description: '' # Filled out description.
    required: true
    default: 'sample-registry'
  dockerfile:
    description: '' # Filled out description.
    required: true
    default: Dockerfile
  arm64:
    description: '' # Filled out description.
    required: false
    default: false  
  file-changes:
    description: 'file pattern list for checking rebuilding image or not'
    required: false
    default: ''
  file-ignore-changes:
    description: 'file pattern list for checking rebuilding image or not'
    required: false
    default: ''
  extra-build-args:
    description: ''
    required: false
    default: ''
  base_sha:
    description: ''
    required: false
    default: ''
  sha:
    description: ''
    required: false
    default: ''
  deploy_env:
    description: ''
    required: false
    default: ''

runs:
  using: "composite"
  steps:
  - name: Login to Amazon ECR
    id: login-ecr
    uses: aws-actions/amazon-ecr-login@v2
  - name: Set up Docker Buildx
    uses: docker/setup-buildx-action@v3
  - name: Set up QEMU
    uses: docker/setup-qemu-action@v2
  - name: Enable BuildKit
    shell: bash
    run: |
      export DOCKER_BUILDKIT=1
      docker buildx create --use
  - name: Docker Build and push (x86_64)
    if: ${{ inputs.arm64 != 'true' }}
    shell: bash
    run: |
       docker buildx build ${{ inputs.extra-build-args }} -f ${GITHUB_WORKSPACE}/${{ inputs.dockerfile }} . \
       --platform linux/amd64 \
       --tag ${{ inputs.registry }}/${{ inputs.repository }}:latest \
       --tag ${{ inputs.registry }}/${{ inputs.repository }}:${{ github.sha }} \
       --tag ${{ inputs.registry }}/trivy-scanning:${{ github.sha }} \
       --push

  - name: Docker Build and push (arm64)
    if: ${{ inputs.arm64 == 'true' }}
    shell: bash
    run: |
      docker buildx build --platform linux/arm64 ${{ inputs.extra-build-args }} -f ${GITHUB_WORKSPACE}/${{ inputs.dockerfile }} . \
      --tag ${{ inputs.registry }}/${{ inputs.repository }}:latest \
      --tag ${{ inputs.registry }}/${{ inputs.repository }}:${{ github.sha }} \
      # --cache-from=type=registry,ref=${{ inputs.registry }}/${{ inputs.repository }}:cache-arm64 \
      # --cache-to=type=registry,ref=${{ inputs.registry }}/${{ inputs.repository }}:cache-arm64,mode=max \
      --push
