name: Build Docker Image

# Builds images on every push to main or tag, but does NOT auto-deploy
on:
  push:
    branches:
      - main
    tags:
      - "v*" # v1.0.0, v1.0.1, etc.

jobs:
  # test-backend:
  #   runs-on: docker

  #   steps:
  #     - name: Checkout repository
  #       uses: actions/checkout@v4

  #     - name: Run backend tests
  #       run: |
  #         docker buildx build \
  #           --target backend-test \
  #           --platform linux/amd64 \
  #           -f be/docker/common/unified/Dockerfile \
  #           .

  build-backend:
    runs-on: docker
    # needs: [test-backend]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Login to Docker registry
        run: |
          echo "${{ secrets.REGISTRY_PASSWORD }}" | \
            docker login git.koppkb.com \
              -u "${{ secrets.REGISTRY_USERNAME }}" \
              --password-stdin

      - name: Build & push backend image
        run: |
          set -e

          IMAGE="git.koppkb.com/kopkb/my-kopkb-be"
          TAGS="-t ${IMAGE}:${{ gitea.sha }}"

          if [ "${{ gitea.ref_type }}" = "tag" ] && echo "${{ gitea.ref_name }}" | grep -q '^v'; then
            TAGS="${TAGS} -t ${IMAGE}:${{ gitea.ref_name }}"
          fi

          echo "Building and pushing backend: ${TAGS}"
          docker buildx build \
            --target production \
            --platform linux/amd64 \
            --cache-from type=registry,ref=${IMAGE}:buildcache,ignore-error=true \
            --cache-to type=registry,ref=${IMAGE}:buildcache,mode=max \
            -f be/docker/common/unified/Dockerfile \
            ${TAGS} \
            --push .

  build-frontend:
    runs-on: docker

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4

      - name: Login to Docker registry
        run: |
          echo "${{ secrets.REGISTRY_PASSWORD }}" | \
            docker login git.koppkb.com \
              -u "${{ secrets.REGISTRY_USERNAME }}" \
              --password-stdin

      - name: Build & push frontend image
        run: |
          set -e

          IMAGE="git.koppkb.com/kopkb/my-kopkb-fe"
          TAGS="-t ${IMAGE}:${{ gitea.sha }}"

          if [ "${{ gitea.ref_type }}" = "tag" ] && echo "${{ gitea.ref_name }}" | grep -q '^v'; then
            TAGS="${TAGS} -t ${IMAGE}:${{ gitea.ref_name }}"
          fi

          echo "Building and pushing frontend: ${TAGS}"
          docker buildx build \
            --platform linux/amd64 \
            --cache-from type=registry,ref=${IMAGE}:buildcache,ignore-error=true \
            --cache-to type=registry,ref=${IMAGE}:buildcache,mode=max \
            -f fe/docker/Dockerfile \
            --build-arg VITE_API_BASE_URL=https://api.koppkb.com \
            --build-arg VITE_APP_URL=https://anggota.koppkb.com \
            ${TAGS} \
            --push .
