name: Container Build

env:
  # 🖊️ EDIT to change the image registry settings.
  # Registries such as GHCR, Quay.io, and Docker Hub are supported.
  IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
  IMAGE_REGISTRY_USER: ${{ github.actor }}
  IMAGE_REGISTRY_PASSWORD: ${{ github.token }}

on:
  # https://docs.github.com/en/actions/reference/events-that-trigger-workflows
  push:
    branches:
      - main

jobs:
  container-build:
    name: Build and deploy container to registry
    runs-on: ubuntu-20.04

    steps:

      - name: Check out repository
        uses: actions/checkout@v2
        with:
          submodules: true

      - name: Determine timestamp
        id: time
        uses: nanzm/get-time-action@v1.1
        with:
          format: 'YYYYMMDDHHmm'  # Minute granularity timestamp for versioning

      - name: Build from Containerfile
        id: build-image
        uses: redhat-actions/buildah-build@v2
        with:
          image: homepage
          tags: ${{ steps.time.outputs.time }} latest
          containerfiles: |
            ./Containerfile

      - name: Push to registry
        id: push-image
        uses: redhat-actions/push-to-registry@v2
        with:
          image: ${{ steps.build-image.outputs.image }}
          tags: ${{ steps.build-image.outputs.tags }}
          registry: ${{ env.IMAGE_REGISTRY }}
          username: ${{ env.IMAGE_REGISTRY_USER }}
          password: ${{ env.IMAGE_REGISTRY_PASSWORD }}

      - name: Configure access to k8s
        uses: azure/k8s-set-context@v2
        with:
          method: kubeconfig
          kubeconfig: ${{ secrets.KUBECONFIG }}

      - name: Update deployment to new image version
        run: |
          set -e -o pipefail
          kubectl set image -n sites deployments/www www=${{ env.IMAGE_REGISTRY }}/${{ steps.build-image.outputs.image }}:${{ steps.time.outputs.time }}
