name: Build integration image
# Build image and push to ECR when code merged to main branch
on:
  # Automatically trigger on merges/pushes to main
  push:
    branches:
      main

  # Manual trigger from GitHub to build
  workflow_dispatch:
    inputs:
      reason:
        default: 'Testing'
        description: 'Reason of manual trigger'

jobs:
  build:
    runs-on: ubuntu-latest
    env:
      GH_PAT: ${{ secrets.GH_PAT }}
    steps:
      - name: Checkout
        uses: actions/checkout@v2.4.0

      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v1.6.1
        with:
          aws-access-key-id: ${{ secrets.DSS_AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.DSS_AWS_SECRET_ACCESS_KEY }}
          aws-region: ap-southeast-1

      - name: Login to Amazon ECR
        id: login-ecr
        uses: aws-actions/amazon-ecr-login@v1.3.3

      - name: Build Docker image
        id: docker-build
        env:
          ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
        run: |
          repository_name=${{ github.event.repository.name }}
          service_version=main-${GITHUB_SHA:0:7}-$(date +%s)
          image=$ECR_REGISTRY/$repository_name:$service_version
          gh_pat=${{ secrets.GH_PAT }}
          docker build -t $image -f Dockerfile --build-arg GH_PAT=$gh_pat --build-arg SERVICE_VERSION=$service_version .
          echo "##[set-output name=image;]$image"

      - name: Push Docker image to Amazon ECR
        run: docker push ${{ steps.docker-build.outputs.image }}

      - name: Logout of Amazon ECR
        if: always()
        run: docker logout ${{ steps.login-ecr.outputs.registry }}
