From 761e47f6ac13693ff966a0648ae60a1b6cd4d208 Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 16:51:39 -0700 Subject: [PATCH 01/11] Test python/dev dockerfiles build simplification --- docker/dev/Dockerfile | 9 ++++++++- docker/python/Dockerfile | 11 +++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/docker/dev/Dockerfile b/docker/dev/Dockerfile index 514f0b01c6..33a0612eb6 100644 --- a/docker/dev/Dockerfile +++ b/docker/dev/Dockerfile @@ -24,10 +24,17 @@ RUN apt-get update && apt-get install -y \ # Configure git to trust any directory (resolves dubious ownership issues in containers) RUN git config --global --add safe.directory '*' -COPY . /app/ WORKDIR /app + +COPY pyproject.toml /app/ +RUN mkdir -p /app/dimos +RUN touch /app/dimos/__init__.py + +# Install dependencies RUN --mount=type=cache,target=/root/.cache/pip pip install .[dev] +COPY . /app/ + # Copy files and add version to motd COPY /assets/dimensionalascii.txt /etc/motd COPY /docker/dev/bash.sh /root/.bash.sh diff --git a/docker/python/Dockerfile b/docker/python/Dockerfile index f8d06496b4..9b89c5ab62 100644 --- a/docker/python/Dockerfile +++ b/docker/python/Dockerfile @@ -34,10 +34,13 @@ RUN apt-get install -y \ # Fix distutils-installed packages that block pip upgrades RUN apt-get purge -y python3-blinker python3-sympy python3-oauthlib || true -RUN mkdir -p /app/dimos +WORKDIR /app -COPY . /app/ +COPY pyproject.toml /app/ +RUN mkdir -p /app/dimos +RUN touch /app/dimos/__init__.py -WORKDIR /app +# Install dependencies +RUN --mount=type=cache,target=/root/.cache/pip bash -c "pip install --upgrade 'pip>=24' 'setuptools>=70' 'wheel' 'packaging>=24' && pip install '.[cpu]'" -RUN --mount=type=cache,target=/root/.cache/pip bash -c "pip install --upgrade 'pip>=24' 'setuptools>=70' 'wheel' 'packaging>=24' && pip install '.[cpu]'" \ No newline at end of file +COPY . /app/ \ No newline at end of file From cc0ca0b528802771403da75b247f4f24cc29750b Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 17:13:29 -0700 Subject: [PATCH 02/11] Deprecated requirements.txt from check-changes, added pyproject --- .github/workflows/docker.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 54c61d2feb..09b3f44f61 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -34,8 +34,7 @@ jobs: - .github/workflows/_docker-build-template.yml - .github/workflows/docker.yml - docker/python/** - - requirements*.txt - - requirements.txt + - pyproject.toml dev: - docker/dev/** From 782e0b00284c13d95852fd578aad2ca055c930ad Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 18:45:36 -0700 Subject: [PATCH 03/11] testing skip builds --- dimos/perception/spatial_perception.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dimos/perception/spatial_perception.py b/dimos/perception/spatial_perception.py index b994b52bc4..332786d6f4 100644 --- a/dimos/perception/spatial_perception.py +++ b/dimos/perception/spatial_perception.py @@ -35,6 +35,8 @@ logger = setup_logger("dimos.perception.spatial_memory") +print("test docker cicd builds") + class SpatialMemory: """ From 4584017a3d8ce11ac98a20ad96c16c1886cfef26 Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 19:20:42 -0700 Subject: [PATCH 04/11] Added working exit conditions to builds --- .github/workflows/_docker-build-template.yml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/_docker-build-template.yml b/.github/workflows/_docker-build-template.yml index 48daabe22e..5adaf4c53c 100644 --- a/.github/workflows/_docker-build-template.yml +++ b/.github/workflows/_docker-build-template.yml @@ -19,14 +19,10 @@ jobs: packages: write steps: - - name: exit early - if: ${{ !inputs.should-run }} - run: | - exit 0 - name: free up disk space # takes a bit of time, so disabled by default # explicitly enable this for large builds - if: ${{ inputs.freespace }} + if: ${{ inputs.should-run && inputs.freespace }} run: | echo -e "pre cleanup space:\n $(df -h)" sudo rm -rf /opt/ghc @@ -36,8 +32,10 @@ jobs: echo -e "post cleanup space:\n $(df -h)" - uses: actions/checkout@v4 + if: ${{ inputs.should-run }} - uses: docker/login-action@v3 + if: ${{ inputs.should-run }} with: registry: ghcr.io username: ${{ github.actor }} @@ -45,15 +43,18 @@ jobs: # required for github cache of docker layers - uses: crazy-max/ghaction-github-runtime@v3 + if: ${{ inputs.should-run }} # required for github cache of docker layers - uses: docker/setup-buildx-action@v3 + if: ${{ inputs.should-run }} with: driver: docker-container install: true use: true - uses: docker/build-push-action@v6 + if: ${{ inputs.should-run }} with: push: true context: ${{ inputs.context }} From e8df8394951d175adc5c6930483c920536ebef09 Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 19:20:55 -0700 Subject: [PATCH 05/11] Testing skip builds --- dimos/perception/spatial_perception.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dimos/perception/spatial_perception.py b/dimos/perception/spatial_perception.py index 332786d6f4..a5e6d07c2a 100644 --- a/dimos/perception/spatial_perception.py +++ b/dimos/perception/spatial_perception.py @@ -35,7 +35,7 @@ logger = setup_logger("dimos.perception.spatial_memory") -print("test docker cicd builds") +print("test docker cicd builds 2") class SpatialMemory: From 9c41622d3556a2c376c016846f969900bc412dc7 Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 19:38:28 -0700 Subject: [PATCH 06/11] ROS container build fix to always build if change --- .github/workflows/docker.yml | 1 + dimos/perception/spatial_perception.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 09b3f44f61..c4517477ea 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -72,6 +72,7 @@ jobs: if: needs.check-changes.outputs.ros == 'true' uses: ./.github/workflows/_docker-build-template.yml with: + should-run: true from-image: ubuntu:22.04 to-image: ghcr.io/dimensionalos/ros:${{ needs.check-changes.outputs.branch-tag }} dockerfile: ros diff --git a/dimos/perception/spatial_perception.py b/dimos/perception/spatial_perception.py index a5e6d07c2a..10f8c9900e 100644 --- a/dimos/perception/spatial_perception.py +++ b/dimos/perception/spatial_perception.py @@ -35,7 +35,7 @@ logger = setup_logger("dimos.perception.spatial_memory") -print("test docker cicd builds 2") +print("") class SpatialMemory: From 9c74b2d7beeeeda588656dc7244f6fd674ed8e0f Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 20:20:05 -0700 Subject: [PATCH 07/11] Added runner cleanup workflow --- .github/workflows/cleanup-runner.yml | 47 ++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/cleanup-runner.yml diff --git a/.github/workflows/cleanup-runner.yml b/.github/workflows/cleanup-runner.yml new file mode 100644 index 0000000000..f51c69d638 --- /dev/null +++ b/.github/workflows/cleanup-runner.yml @@ -0,0 +1,47 @@ +name: cleanup-runner + +on: + workflow_run: + workflows: ["docker"] + types: [completed] + workflow_dispatch: + +jobs: + cleanup: + runs-on: [self-hosted, Linux] + steps: + - name: Check disk usage + id: disk-check + run: | + USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') + echo "Disk usage: ${USAGE}%" + echo "usage=${USAGE}" >> $GITHUB_OUTPUT + + - name: Clean Docker images + if: steps.disk-check.outputs.usage > 50 + run: | + echo "=== Docker usage before cleanup ===" + docker system df + + echo -e "\n=== Removing dangling images ===" + docker images -f "dangling=true" -q | xargs -r docker rmi || true + + echo -e "\n=== Docker usage after cleanup ===" + docker system df + + echo -e "\n=== Disk usage after cleanup ===" + df -h / + + - name: Aggressive cleanup if disk critically full + if: steps.disk-check.outputs.usage > 90 + run: | + echo "=== CRITICAL: Disk usage above 90% - Aggressive cleanup ===" + + echo -e "\n=== Removing images older than 3 days ===" + docker image prune -a --filter "until=72h" -f + + echo -e "\n=== Final docker usage ===" + docker system df + + echo -e "\n=== Final disk usage ===" + df -h / \ No newline at end of file From a6d3e02e28a3d19ff6d533dc0674a32de757b32d Mon Sep 17 00:00:00 2001 From: stash Date: Wed, 23 Jul 2025 20:49:52 -0700 Subject: [PATCH 08/11] Added cleanup-runner to docker.yml in interim --- .github/workflows/docker.yml | 44 +++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index c4517477ea..86ff6cda89 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -8,7 +8,7 @@ permissions: jobs: check-changes: - runs-on: dimos-runner-ubuntu-2204 + runs-on: [self-hosted, Linux] outputs: ros: ${{ steps.filter.outputs.ros }} python: ${{ steps.filter.outputs.python }} @@ -176,3 +176,45 @@ jobs: }} cmd: "pytest -m heavy" dev-image: dev:${{ needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} + + # TODO: Remove when merge to main as workflow_run needed + cleanup-runner: + needs: [run-tests, run-heavy-tests, run-ros-tests] + if: always() + runs-on: [self-hosted, Linux] + steps: + - name: Check disk usage + id: disk-check + run: | + USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') + echo "Disk usage: ${USAGE}%" + echo "usage=${USAGE}" >> $GITHUB_OUTPUT + + - name: Clean Docker images + if: steps.disk-check.outputs.usage > 50 + run: | + echo "=== Docker usage before cleanup ===" + docker system df + + echo -e "\n=== Removing dangling images ===" + docker images -f "dangling=true" -q | xargs -r docker rmi || true + + echo -e "\n=== Docker usage after cleanup ===" + docker system df + + echo -e "\n=== Disk usage after cleanup ===" + df -h / + + - name: Aggressive cleanup if disk critically full + if: steps.disk-check.outputs.usage > 90 + run: | + echo "=== CRITICAL: Disk usage above 90% - Aggressive cleanup ===" + + echo -e "\n=== Removing images older than 3 days ===" + docker image prune -a --filter "until=72h" -f + + echo -e "\n=== Final docker usage ===" + docker system df + + echo -e "\n=== Final disk usage ===" + df -h / From a804115ed588d4d18606dee45a7a8b614b56616e Mon Sep 17 00:00:00 2001 From: stash Date: Fri, 25 Jul 2025 06:50:08 -0700 Subject: [PATCH 09/11] Reverted test python change --- dimos/perception/spatial_perception.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dimos/perception/spatial_perception.py b/dimos/perception/spatial_perception.py index 10f8c9900e..b994b52bc4 100644 --- a/dimos/perception/spatial_perception.py +++ b/dimos/perception/spatial_perception.py @@ -35,8 +35,6 @@ logger = setup_logger("dimos.perception.spatial_memory") -print("") - class SpatialMemory: """ From bd12bb959b391f94d79f58c320487933d9d945d8 Mon Sep 17 00:00:00 2001 From: stash Date: Thu, 24 Jul 2025 03:17:04 -0700 Subject: [PATCH 10/11] Test permission fix to build template docker workflow --- .github/workflows/_docker-build-template.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/_docker-build-template.yml b/.github/workflows/_docker-build-template.yml index 5adaf4c53c..47e99863a5 100644 --- a/.github/workflows/_docker-build-template.yml +++ b/.github/workflows/_docker-build-template.yml @@ -31,6 +31,11 @@ jobs: sudo rm -rf /usr/local/lib/android echo -e "post cleanup space:\n $(df -h)" + - name: Fix permissions + if: ${{ inputs.should-run }} + run: | + sudo chown -R $USER:$USER ${{ github.workspace }} || true + - uses: actions/checkout@v4 if: ${{ inputs.should-run }} From 9a40b7c290991cd331ee9e416bc2a953b228bffa Mon Sep 17 00:00:00 2001 From: stash Date: Tue, 22 Jul 2025 11:25:55 -0700 Subject: [PATCH 11/11] Added permission fix to self hosted runner workflow --- .github/workflows/code-cleanup.yml | 4 ++++ .github/workflows/docker.yml | 4 ++++ .github/workflows/tests.yml | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/code-cleanup.yml b/.github/workflows/code-cleanup.yml index f00643c75b..d6ff1aec73 100644 --- a/.github/workflows/code-cleanup.yml +++ b/.github/workflows/code-cleanup.yml @@ -10,6 +10,10 @@ jobs: pre-commit: runs-on: ubuntu-latest steps: + - name: Fix permissions + run: | + sudo chown -R $USER:$USER ${{ github.workspace }} || true + - uses: actions/checkout@v3 - uses: actions/setup-python@v3 - name: Run pre-commit diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 86ff6cda89..0227bba091 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -16,6 +16,10 @@ jobs: tests: ${{ steps.filter.outputs.tests }} branch-tag: ${{ steps.set-tag.outputs.branch_tag }} steps: + - name: Fix permissions + run: | + sudo chown -R $USER:$USER ${{ github.workspace }} || true + - uses: actions/checkout@v4 - id: filter uses: dorny/paths-filter@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 46b8650cfe..a461ea4d6a 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -42,7 +42,10 @@ jobs: image: ghcr.io/dimensionalos/${{ inputs.dev-image }} steps: - + - name: Fix permissions + run: | + sudo chown -R $USER:$USER ${{ github.workspace }} || true + - uses: actions/checkout@v4 - name: Run tests