Add Docker Compose generator #17
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: ci | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - main | |
| jobs: | |
| lint: | |
| name: Lint Code | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: Install dependencies | |
| shell: bash | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y bash codespell python3-argcomplete | |
| make install-requirements | |
| - name: Run format check | |
| run: | | |
| make check-format | |
| - name: Run lint | |
| run: | | |
| make lint | |
| build-image: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: Install dependencies | |
| shell: bash | |
| run: | | |
| df -h | |
| sudo apt-get update | |
| sudo apt-get install -y bash codespell python3-argcomplete pipx podman | |
| make install-requirements | |
| - name: Upgrade to podman 5 | |
| run: | | |
| set -e | |
| # /mnt has ~ 65 GB free disk space. / is too small. | |
| sudo mkdir -m a=rwx -p /mnt/tmp /mnt/runner | |
| sudo mkdir -m o=rwx -p /home/runner/.local | |
| sudo chown runner:runner /mnt/runner /home/runner/.local | |
| sudo mount --bind /mnt/runner /home/runner/.local | |
| # Enable universe repository which contains podman | |
| sudo add-apt-repository "deb http://archive.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: Build a container for CPU inferencing | |
| shell: bash | |
| run: | | |
| ./container_build.sh build -s ramalama | |
| unit-test: | |
| name: Unit Tests | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: Install dependencies | |
| shell: bash | |
| run: | | |
| df -h | |
| sudo apt-get update | |
| sudo apt-get install -y bash codespell python3-argcomplete pipx podman | |
| make install-requirements | |
| - name: Upgrade to podman 5 | |
| run: | | |
| set -e | |
| # Enable universe repository which contains podman | |
| sudo add-apt-repository "deb http://archive.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: Run unit tests | |
| run: | | |
| make unit-tests | |
| bats: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: install bats | |
| shell: bash | |
| run: | | |
| df -h | |
| # /mnt has ~ 65 GB free disk space. / is too small. | |
| sudo mkdir -m a=rwx -p /mnt/tmp /mnt/runner | |
| sudo mkdir -m o=rwx -p /home/runner/.local | |
| sudo chown runner:runner /mnt/runner /home/runner/.local | |
| sudo mount --bind /mnt/runner /home/runner/.local | |
| sudo apt-get update | |
| sudo apt-get install podman bats bash codespell python3-argcomplete | |
| make install-requirements | |
| - name: install ollama | |
| shell: bash | |
| run: ./.github/scripts/install-ollama.sh | |
| - name: Upgrade to podman 5 | |
| run: | | |
| set -e | |
| # Enable universe repository which contains podman | |
| sudo add-apt-repository "deb http://archive.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: run bats | |
| run: | | |
| TEMPDIR=/mnt/tmp | |
| make validate | |
| make bats | |
| bats-nocontainer: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: install bats | |
| shell: bash | |
| run: | | |
| df -h | |
| sudo apt-get update | |
| sudo apt-get install podman bats bash codespell python3-argcomplete git cmake libcurl4-openssl-dev | |
| make install-requirements | |
| sudo ./container-images/scripts/build_llama_and_whisper.sh | |
| sudo python -m pip install . --prefix=/usr | |
| - name: install ollama | |
| shell: bash | |
| run: ./.github/scripts/install-ollama.sh | |
| - name: Upgrade to podman 5 | |
| run: | | |
| set -e | |
| # Enable universe repository which contains podman | |
| sudo add-apt-repository "deb http://archive.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: bats-nocontainer | |
| run: | | |
| make bats-nocontainer | |
| docker: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: install bats | |
| shell: bash | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install bats bash codespell python3-argcomplete | |
| make install-requirements | |
| - name: install ollama | |
| shell: bash | |
| run: ./.github/scripts/install-ollama.sh | |
| - name: Upgrade to podman 5 | |
| run: | | |
| set -e | |
| # Enable universe repository which contains podman | |
| sudo add-apt-repository "deb http://archive.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: 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 | |
| # /mnt has ~ 65 GB free disk space. / is too small. | |
| - name: Reconfigure Docker data-root | |
| run: | | |
| sudo mkdir -p /mnt/docker /etc/docker | |
| echo '{"data-root": "/mnt/docker"}' > /tmp/daemon.json | |
| sudo mv /tmp/daemon.json /etc/docker/daemon.json | |
| cat /etc/docker/daemon.json | |
| sudo systemctl restart docker.service | |
| sudo mkdir -m a=rwx -p /mnt/tmp /mnt/runner | |
| sudo mkdir -m o=rwx -p /home/runner/.local | |
| sudo chown runner:runner /mnt/runner /home/runner/.local | |
| sudo mount --bind /mnt/runner /home/runner/.local | |
| df -h | |
| - name: bats-docker | |
| run: | | |
| docker info | |
| make bats-docker | |
| macos: | |
| runs-on: macos-14 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install the latest version of uv and activate the environment | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| activate-environment: true | |
| - name: install mlx-lm | |
| shell: bash | |
| run: | | |
| uv pip install mlx-lm | |
| - name: install golang | |
| shell: bash | |
| run: | | |
| brew install go bats bash jq llama.cpp shellcheck | |
| make install-requirements | |
| - name: install ollama | |
| shell: bash | |
| run: ./.github/scripts/install-ollama.sh | |
| - name: Run a one-line script | |
| shell: bash | |
| run: | | |
| make install-requirements | |
| make validate | |
| make bats-nocontainer | |
| # FIXME: ci script should be able to run on MAC. | |
| # - name: Run ci | |
| # shell: bash | |
| # run: make ci |