name: Docker-CI

on:
  push:
    branches:
      - main
      - release/*
    paths:
      - frontend/**
  pull_request:
    branches:
      - main
      - release/*
    paths:
      - frontend/**
    types: [ opened, synchronize, reopened, unlocked, ready_for_review ]

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  build-app:
    if: github.event.pull_request.draft != true
    runs-on: ubuntu-latest
    steps:
      - name: Checkout source code
        uses: actions/checkout@v4

      - name: Set up Docker Compose
        run: |
          docker-compose --version || {
            echo "Docker Compose not found, installing..."
            sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
            sudo chmod +x /usr/local/bin/docker-compose
            docker-compose --version
          }

      - name: Build the app
        shell: bash
        run: |
          set -eu -o pipefail
          cd frontend/scripts/docker-buildfiles
          docker-compose build --no-cache --progress=plain \
          | while read line; do \
              if [[ "$line" =~ ^Step[[:space:]] ]]; then \
                echo "$(date -u '+%H:%M:%S') | $line"; \
              else \
                echo "$line"; \
              fi; \
            done