name: nightly-build
on:
  schedule:
    - cron: '0 0 * * *' 
  workflow_dispatch:

jobs:
  linux:
    runs-on: ubuntu-24.04
    steps:
      - name: Checkout ramalama
        uses: actions/checkout@v5

      - name: Free Disk Space Linux
        shell: bash
        run: |
           sudo docker rmi "$(docker image ls -aq)" >/dev/null 2>&1 || true
           sudo rm -rf \
              /usr/share/dotnet /usr/local/lib/android /opt/ghc \
              /usr/local/share/powershell /usr/share/swift /usr/local/.ghcup \
              /usr/lib/jvm || true
           sudo apt install aptitude -y >/dev/null 2>&1

      - name: Upgrade to podman 5
        run: |
           set -e
           # Enable universe repository which contains podman
           sudo add-apt-repository "deb http://old-releases.ubuntu.com/ubuntu oracular universe"
           # Update package lists
           sudo apt-get update
           sudo apt-get purge firefox
           # Install specific podman version
           sudo apt-get upgrade

      # /mnt has ~ 65 GB free disk space. / is too small.
      - name: Reconfigure Docker data-root
        run: |
           set -e
           sudo mkdir -p /mnt/docker /etc/docker
           echo '{"data-root": "/mnt/docker"}' > /tmp/daemon.json
           sudo mv /tmp/daemon.json /etc/docker/daemon.json
           sudo systemctl restart docker.service
           df -h

      - name: Docker info
        run: docker info

      - name: Print disk space after cleanup
        shell: bash
        run: |
           df -h

      - name: Build a container for CPU inferencing
        run: ./container_build.sh build ramalama

      - name: Install end-to-end test requirements
        run: |
          sudo apt-get install bats
          make install-requirements

      - name: Run end-to-end tests
        run: make end-to-end-tests

  macos:
    runs-on: macos-14
    steps:
      - name: Checkout ramalama
        uses: actions/checkout@v5

      - name: Install end-to-end test requirements
        shell: bash
        run: |
          brew install go shellcheck bats
          make install-requirements

      - name: Run end-to-end tests
        shell: bash
        run: make end-to-end-tests

  build:
    runs-on: ubuntu-24.04
    needs: [linux, macos]
    steps:
        - name: Checkout ramalama
          uses: actions/checkout@v5

        - name: Upgrade to podman 5
          run: |
            set -e
            # Enable universe repository which contains podman
            sudo add-apt-repository "deb http://old-releases.ubuntu.com/ubuntu oracular universe"
            # Update package lists
            sudo apt-get update
            sudo apt-get purge firefox
            # Install specific podman version
            sudo apt-get upgrade

        - name: install qemu-user-static
          run: |
            sudo apt-get update
            sudo apt-get install qemu-user-static

        - name: Login to quay
          uses: redhat-actions/podman-login@v1.7
          with:
            registry: quay.io
            username: ${{ secrets.USERNAME }}
            password: ${{ secrets.PASSWORD }}

        - name: Build images for amd64 and arm64
          uses: redhat-actions/buildah-build@v2
          id: build_image
          with:
            image: quay.io/ramalama/ramalama
            tags: nightly
            containerfiles: |
              container-images/ramalama/Containerfile
            platforms: linux/amd64, linux/arm64

        - name: Push images to quay
          uses: redhat-actions/push-to-registry@v2.8
          with:
            image: ramalama/ramalama
            tags: nightly
            registry: quay.io
