name: CI

on:
  pull_request:
  workflow_dispatch:

permissions: read-all

jobs:
  ci:
    runs-on: ubuntu-latest
    permissions:
      packages: write
      contents: write
    steps:
      - name: Cleanup Disk
        uses: jlumbroso/free-disk-space@v1.3.1
        with:
          android: true
          dotnet: true
          haskell: true
          tool-cache: true
          large-packages: false
          swap-storage: false
      - name: Cleanup docker cache
        run: |
          echo "-------------Disk info before cleanup----------------"
          df -h
          echo "-----------------------------------------------------"
          docker system prune -a -f
          echo "-------------Disk info after cleanup----------------"
          df -h
          echo "-----------------------------------------------------"
      - name: Checkout
        uses: actions/checkout@v5
        # We need the full history for the commitlint task
        with:
          fetch-depth: 0
          ref: ${{ github.event.pull_request.head.sha }}
      - name: Install QEMU static binaries
        uses: docker/setup-qemu-action@v3
      - name: Install Task
        uses: arduino/setup-task@v2
      - name: Install Dagger
        env:
          # renovate: datasource=github-tags depName=dagger/dagger versioning=semver
          DAGGER_VERSION: 0.19.5
        run: |
          curl -L https://dl.dagger.io/dagger/install.sh | BIN_DIR=$HOME/.local/bin sh
      - name: Run CI task
        run: |
          task ci
      - name: Write manifest
        run: |
          task manifest
      - name: Publish images
        if: |
          github.event_name == 'workflow_dispatch' ||
          github.event.pull_request.head.repo.full_name == github.repository
        env:
          REGISTRY_USER: ${{ github.actor }}
          REGISTRY_PASSWORD: ${{ secrets.GITHUB_TOKEN }}
        run: |
          task publish
      - name: Attach manifest to workflow run
        uses: actions/upload-artifact@v5
        with:
          name: manifest.yaml
          path: ./manifest.yaml
