Fix Gitea Actions: drop custom job container, use setup-python
CI / lint:ruff (push) Successful in 1m49s
CI / format:ruff (push) Successful in 7s
CI / typecheck:ty (push) Successful in 10s
CI / vulnerabilities:pip-audit (push) Failing after 9s
CI / test:pytest (push) Has been skipped

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 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 13:13:17 +02:00
parent ea5ec680c5
commit f7294909a2
3 changed files with 23 additions and 28 deletions
+20 -25
View File
@@ -8,70 +8,65 @@ jobs:
lint: lint:
name: lint:ruff name: lint:ruff
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: python:3.11-slim
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Cache pip - uses: actions/setup-python@v5
uses: actions/cache@v4
with: with:
path: ~/.cache/pip python-version: "3.11"
key: pip-${{ hashFiles('pyproject.toml') }} cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]" - run: pip install -e ".[dev,plotting]"
- run: ruff check gallery plotstyle tests - run: ruff check gallery plotstyle tests
format: format:
name: format:ruff name: format:ruff
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: python:3.11-slim
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Cache pip - uses: actions/setup-python@v5
uses: actions/cache@v4
with: with:
path: ~/.cache/pip python-version: "3.11"
key: pip-${{ hashFiles('pyproject.toml') }} cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]" - run: pip install -e ".[dev,plotting]"
- run: ruff format --check gallery plotstyle tests - run: ruff format --check gallery plotstyle tests
typecheck: typecheck:
name: typecheck:ty name: typecheck:ty
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: python:3.11-slim
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Cache pip - uses: actions/setup-python@v5
uses: actions/cache@v4
with: with:
path: ~/.cache/pip python-version: "3.11"
key: pip-${{ hashFiles('pyproject.toml') }} cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]" - run: pip install -e ".[dev,plotting]"
- run: ty check gallery plotstyle - run: ty check gallery plotstyle
vulnerabilities: vulnerabilities:
name: vulnerabilities:pip-audit name: vulnerabilities:pip-audit
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: python:3.11-slim
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Cache pip - uses: actions/setup-python@v5
uses: actions/cache@v4
with: with:
path: ~/.cache/pip python-version: "3.11"
key: pip-${{ hashFiles('pyproject.toml') }} cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]" - run: pip install -e ".[dev,plotting]"
- run: pip-audit - run: pip-audit
test: test:
name: test:pytest name: test:pytest
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: python:3.11-slim
needs: [lint, format, typecheck, vulnerabilities] needs: [lint, format, typecheck, vulnerabilities]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Cache pip - uses: actions/setup-python@v5
uses: actions/cache@v4
with: with:
path: ~/.cache/pip python-version: "3.11"
key: pip-${{ hashFiles('pyproject.toml') }} cache: pip
cache-dependency-path: pyproject.toml
- run: pip install -e ".[dev,plotting]" - run: pip install -e ".[dev,plotting]"
- run: python -m pytest tests/ -v - run: python -m pytest tests/ -v
+1 -1
View File
@@ -133,6 +133,6 @@ The frontend is vanilla ES modules — no build step. `assets/js/main.js` import
### Deployment ### 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`. 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`.
+2 -2
View File
@@ -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. 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), 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 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 be redundant. It remains a fine option for anyone deploying this on their own
remains a fine option for anyone deploying this on their own server. server.