name: ci

on:
  push:
    branches: [main]
  schedule:
    - cron: "0 6 * * *"

jobs:
  workstation:
    runs-on: self-hosted
    steps:
      - name: Set current date as env variable
        run: echo "NOW=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_ENV
      - name: Fix for bad os check
        run: echo "RUNNER_OS=Linux" >> $GITHUB_ENV
      - name: Login to Forgejo Registry
        uses: https://cremin.dev/actions/podman-login@v1
        with:
          registry: cremin.dev
          username: ${{ vars.FORGEJO_REGISTRY_USER }}
          password: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
          logout: false
      - name: Check out repository
        uses: https://cremin.dev/actions/checkout@v4
      - name: Get commit message
        id: commit_message
        run: |
          echo "message=$(git log -1 --pretty=%B)" >> $GITHUB_OUTPUT
      - name: Check if workstation was changed
        if: ${{ github.event_name != 'schedule' }}
        uses: https://cremin.dev/actions/paths-filter@v3
        id: changes
        with:
          filters: |
            src:
              - 'workstation/**'
      - name: Fetch latest image
        if: github.event_name == 'schedule' || steps.changes.outputs.src == 'true' || grep -q '!force' ${{ steps.commit_message.outputs.message }}
        run: |
          podman pull ghcr.io/ublue-os/silverblue-main:42
      - name: Build image
        if: github.event_name == 'schedule' || steps.changes.outputs.src == 'true' || grep -q '!force' ${{ steps.commit_message.outputs.message }}
        uses: https://cremin.dev/actions/buildah-build@v2
        with:
          containerfiles: ./workstation/Containerfile
          context: ./workstation
          oci: true
          image: cremin.dev/jonathan/ublue-silverblue-main
          tags: 42 latest 42-${{ env.NOW }}
      - name: Push image
        if: github.event_name == 'schedule' || steps.changes.outputs.src == 'true' || grep -q '!force' ${{ steps.commit_message.outputs.message }}
        uses: https://cremin.dev/actions/push-to-registry@v2
        with:
          registry: cremin.dev
          username: ${{ vars.FORGEJO_REGISTRY_USER }}
          password: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
          image: jonathan/ublue-silverblue-main
          tags: 42 latest 42-${{ env.NOW }}
  workstation-nvidia:
    runs-on: self-hosted
    steps:
      - name: Set current date as env variable
        run: echo "NOW=$(date +'%Y%m%d-%H%M%S')" >> $GITHUB_ENV
      - name: Fix for bad os check
        run: echo "RUNNER_OS=Linux" >> $GITHUB_ENV
      - name: Login to Forgejo Registry
        uses: https://cremin.dev/actions/podman-login@v1
        with:
          registry: cremin.dev
          username: ${{ vars.FORGEJO_REGISTRY_USER }}
          password: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
          logout: false
      - name: Check out repository
        uses: https://cremin.dev/actions/checkout@v4
      - name: Get commit message
        id: commit_message
        run: |
          echo "message=$(git log -1 --pretty=%B)" >> $GITHUB_OUTPUT
      - name: Check if workstation-nvidia was changed
        if: ${{ github.event_name != 'schedule' }}
        uses: https://cremin.dev/actions/paths-filter@v3
        id: changes
        with:
          filters: |
            src:
              - 'workstation-nvidia/**'
      - name: Fetch latest image
        if: github.event_name == 'schedule' || steps.changes.outputs.src == 'true' || grep -q '!force' ${{ steps.commit_message.outputs.message }}
        run: |
          podman pull ghcr.io/ublue-os/silverblue-main:42
      - name: Build image
        if: github.event_name == 'schedule' || steps.changes.outputs.src == 'true' || grep -q '!force' ${{ steps.commit_message.outputs.message }}
        uses: https://cremin.dev/actions/buildah-build@v2
        with:
          containerfiles: ./workstation-nvidia/Containerfile
          context: ./workstation-nvidia
          oci: true
          layers: true
          image: cremin.dev/jonathan/ublue-silverblue-nvidia
          tags: 42 latest 42-${{ env.NOW }}
      - name: Push image
        if: github.event_name == 'schedule' || steps.changes.outputs.src == 'true' || grep -q '!force' ${{ steps.commit_message.outputs.message }}
        uses: https://cremin.dev/actions/push-to-registry@v2
        with:
          registry: cremin.dev
          username: ${{ vars.FORGEJO_REGISTRY_USER }}
          password: ${{ secrets.FORGEJO_REGISTRY_TOKEN }}
          image: jonathan/ublue-silverblue-nvidia
          tags: 42 latest 42-${{ env.NOW }}