From f7294909a2aa2f86b6d822fc2689b34b0fb64f96 Mon Sep 17 00:00:00 2001 From: Lars Bogner Date: Thu, 23 Jul 2026 13:13:17 +0200 Subject: [PATCH] Fix Gitea Actions: drop custom job container, use setup-python The python:3.11-slim job container lacked a Node.js runtime, so the runner couldn't exec actions/checkout inside it. Run jobs on the default runner image instead and pin Python via actions/setup-python. Co-Authored-By: Claude Sonnet 5 --- .gitea/workflows/ci.yml | 45 ++++++++++++++++++---------------------- CLAUDE.md | 2 +- deploy/systemd/README.md | 4 ++-- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 1388288..604dc56 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -8,70 +8,65 @@ jobs: lint: name: lint:ruff runs-on: ubuntu-latest - container: python:3.11-slim steps: - uses: actions/checkout@v4 - - name: Cache pip - uses: actions/cache@v4 + - uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: pip-${{ hashFiles('pyproject.toml') }} + python-version: "3.11" + cache: pip + cache-dependency-path: pyproject.toml - run: pip install -e ".[dev,plotting]" - run: ruff check gallery plotstyle tests format: name: format:ruff runs-on: ubuntu-latest - container: python:3.11-slim steps: - uses: actions/checkout@v4 - - name: Cache pip - uses: actions/cache@v4 + - uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: pip-${{ hashFiles('pyproject.toml') }} + python-version: "3.11" + cache: pip + cache-dependency-path: pyproject.toml - run: pip install -e ".[dev,plotting]" - run: ruff format --check gallery plotstyle tests typecheck: name: typecheck:ty runs-on: ubuntu-latest - container: python:3.11-slim steps: - uses: actions/checkout@v4 - - name: Cache pip - uses: actions/cache@v4 + - uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: pip-${{ hashFiles('pyproject.toml') }} + python-version: "3.11" + cache: pip + cache-dependency-path: pyproject.toml - run: pip install -e ".[dev,plotting]" - run: ty check gallery plotstyle vulnerabilities: name: vulnerabilities:pip-audit runs-on: ubuntu-latest - container: python:3.11-slim steps: - uses: actions/checkout@v4 - - name: Cache pip - uses: actions/cache@v4 + - uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: pip-${{ hashFiles('pyproject.toml') }} + python-version: "3.11" + cache: pip + cache-dependency-path: pyproject.toml - run: pip install -e ".[dev,plotting]" - run: pip-audit test: name: test:pytest runs-on: ubuntu-latest - container: python:3.11-slim needs: [lint, format, typecheck, vulnerabilities] steps: - uses: actions/checkout@v4 - - name: Cache pip - uses: actions/cache@v4 + - uses: actions/setup-python@v5 with: - path: ~/.cache/pip - key: pip-${{ hashFiles('pyproject.toml') }} + python-version: "3.11" + cache: pip + cache-dependency-path: pyproject.toml - run: pip install -e ".[dev,plotting]" - run: python -m pytest tests/ -v diff --git a/CLAUDE.md b/CLAUDE.md index 10b8756..84f5f93 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -133,6 +133,6 @@ The frontend is vanilla ES modules — no build step. `assets/js/main.js` import ### Deployment -The project ships a `Dockerfile` plus `docker-compose.yml` (a `generator` service that runs `gallery generate` on an interval, and an `nginx`-based `web` service serving the output — see `deploy/entrypoint.sh` and `deploy/nginx.conf`). This suits a dedicated VM/server you fully control. CI (`.gitea/workflows/ci.yml`, run via Gitea Actions) runs `ruff check`, `ruff format --check`, `ty check`, `pip-audit`, and pytest directly against a `python:3.11-slim` image — no container build/publish in CI. For local development the `.venv` (or `uv`) is sufficient. +The project ships a `Dockerfile` plus `docker-compose.yml` (a `generator` service that runs `gallery generate` on an interval, and an `nginx`-based `web` service serving the output — see `deploy/entrypoint.sh` and `deploy/nginx.conf`). This suits a dedicated VM/server you fully control. CI (`.gitea/workflows/ci.yml`, run via Gitea Actions) runs `ruff check`, `ruff format --check`, `ty check`, `pip-audit`, and pytest on the default runner image with Python 3.11 via `actions/setup-python` — no container build/publish in CI. For local development the `.venv` (or `uv`) is sufficient. On shared HPC login nodes without a Docker daemon (e.g. KIT ETP, where `public_html` is already auto-served) use a plain venv install plus a `systemd --user` timer instead — see `deploy/systemd/README.md`. diff --git a/deploy/systemd/README.md b/deploy/systemd/README.md index e46ab88..24029e8 100644 --- a/deploy/systemd/README.md +++ b/deploy/systemd/README.md @@ -58,5 +58,5 @@ usable there at all, fall back to a crontab entry instead: where you control a dedicated VM/server and need to serve the output yourself. On the ETP login nodes there's no Docker daemon (Apptainer/Singularity only), and `public_html` is already auto-served — running your own nginx there would -be redundant. Docker is still used for CI (`.gitea/workflows/ci.yml`) and -remains a fine option for anyone deploying this on their own server. +be redundant. It remains a fine option for anyone deploying this on their own +server.