name: CI | Docker Image cyberia-client

on:
  workflow_dispatch:

env:
  UNDERPOST_VERSION: '3.3.0'

jobs:
  build-and-push:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      packages: write

    steps:
      - uses: actions/checkout@v7

      - name: Checkout engine
        uses: actions/checkout@v7
        with:
          repository: underpostnet/engine
          path: engine

      - name: Setup Node.js
        uses: actions/setup-node@v7
        with:
          node-version: '24.x'

      - name: Install engine dependencies
        working-directory: engine
        run: npm ci --ignore-scripts

      - name: Build cyberia-server SSR dashboard
        working-directory: engine
        run: |
          node bin/deploy cyberia
          node bin/cyberia run-workflow build-cyberia-404 --output-path ../assets/404/index.html

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v4

      - name: Login to Docker Hub
        uses: docker/login-action@v4
        with:
          username: ${{ secrets.DOCKER_HUB_USERNAME }}
          password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}

      - name: Extract Docker metadata
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: underpost/cyberia-client
          tags: |
            type=raw,value=v${{ env.UNDERPOST_VERSION }}
            type=raw,value=latest
      # type=ref,event=branch
      # type=sha,prefix=sha-

      - name: Build and push image
        uses: docker/build-push-action@v7
        with:
          context: .
          file: ./Dockerfile
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}

          build-args: |
            UNDERPOST_VERSION=${{ env.UNDERPOST_VERSION }}
            BUILD_MODE=RELEASE
