name: CI

on:
  push:
    branches:
      - main
      - develop

  pull_request:
    branches:
      - main

jobs:
  lint:
    name: 🔍 Lint & Type Check
    runs-on: ubuntu-latest
    steps:
      - name: 📥 Checkout
        uses: actions/checkout@v4

      - name: 🟢 Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '22'

      - name: 📦 Cache node_modules
        uses: actions/cache@v4
        with:
          path: ~/.npm
          key: npm-${{ hashFiles('package-lock.json') }}
          restore-keys: |
            npm-

      - name: 📥 Install dependencies
        run: npm ci

      - name: 🔍 Lint
        run: npm run lint

  docker:
    name: 🐳 Build & Push Image
    needs: lint
    if: ${{ github.ref == 'refs/heads/main' }}
    runs-on: ubuntu-latest
    steps:
      - name: 📥 Checkout
        uses: actions/checkout@v4

      - name: 🔐 Login Registry Gitea
        run: |
          docker login git.leonmorival.xyz \
            -u "${{ secrets.REGISTRY_USER }}" \
            -p "${{ secrets.REGISTRY_PASSWORD }}"

      - name: 🏗️ Build image
        run: |
          docker build \
            -t git.leonmorival.xyz/leonm/landing-server:latest \
            -t git.leonmorival.xyz/leonm/landing-server:${{ github.sha }} \
            .

      - name: 📤 Push image
        run: |
          docker push git.leonmorival.xyz/leonm/landing-server:latest
          docker push git.leonmorival.xyz/leonm/landing-server:${{ github.sha }}
