feat: live tracker suite - WIKITOOL_TASKS_CONFIG override, real-tracker tests for Super Productivity and CalDAV, nightly workflow and test image (#156)
CI / verify (push) Failing after 2m1s
Release / release (push) Successful in 38s

Files changed:
- .gitea/scripts/start-radicale.sh
- .gitea/sp-live/Dockerfile
- .gitea/sp-live/resolve-version.sh
- .gitea/workflows/ci.yml
- .gitea/workflows/sp-live-image.yml
- .gitea/workflows/tracker-live.yml
- .gitignore
- CHANGES.md
- DEVELOPMENT.md
- INSTALL.md
- VERSION
- instructions/dev/doc-pull-through.md
- instructions/dev/stack-dev/SKILL.md
- instructions/dev/testing-conventions.md
- instructions/dev/tracker-testing.md
- kb/gtd/INDEX.md
- kb/gtd/technik/Chemenu 8.0.0 freigeben.md
- kb/gtd/technik/Windows nativ unterstützen.md
- kb/index.md
- tools/CONTRACT.md
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/review_cmd.py
- tools/chemenu/commands/task_cmd.py
- tools/chemenu/config.py
- tools/chemenu/tasks/config.py
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/fixtures/sp/MANIFEST.json
- tools/chemenu/tests/fixtures/sp/api/health.json
- tools/chemenu/tests/fixtures/sp/api/projects.json
- tools/chemenu/tests/fixtures/sp/api/tags.json
- tools/chemenu/tests/fixtures/sp/api/tasks.json
- tools/chemenu/tests/fixtures/sp/seed-backup.json
- tools/chemenu/tests/record_sp_fixtures.py
- tools/chemenu/tests/sp_headless.py
- tools/chemenu/tests/test_doctor.py
- tools/chemenu/tests/test_review.py
- tools/chemenu/tests/test_sp_recorded.py
- tools/chemenu/tests/test_task_cmd.py
- tools/chemenu/tests/test_tasks_config.py
- tools/chemenu/tests/test_tracker_live.py
- tools/chemenu/tests/tracker_live.py
- tools/pytest.ini
This commit is contained in:
torben committed 2026-09-30 13:23:24 +02:00
1 parent 529793b255
commit b0c64772cc
43 files changed
+2279 -32

No files matched your search

+30
View File
@@ -0,0 +1,30 @@
# The image the nightly `tracker-live` workflow runs in: the packaged Super Productivity
# desktop app, an X server to hold it, and what the suite itself needs (Gitea #156).
# Built by `.gitea/workflows/sp-live-image.yml`, never by hand.
FROM debian:trixie-slim
ARG SP_VERSION
ARG SP_SHA512
# `nodejs` is for act_runner, which executes JavaScript actions (checkout) inside the
# job container. `libasound2t64` and `libgbm1` are the two libraries the .deb does not
# pull in and the app will not start without.
RUN set -eu; \
test -n "$SP_VERSION" && test -n "$SP_SHA512"; \
apt-get update -qq; \
apt-get install -y --no-install-recommends \
ca-certificates curl git nodejs python3 python3-venv ripgrep \
xvfb xauth libasound2t64 libgbm1; \
curl -fsSL -o /tmp/sp.deb \
"https://github.com/super-productivity/super-productivity/releases/download/v${SP_VERSION}/superProductivity-amd64.deb"; \
expected="$(printf '%s' "$SP_SHA512" | base64 -d | od -An -v -tx1 | tr -d ' \n')"; \
echo "${expected} /tmp/sp.deb" | sha512sum -c -; \
apt-get install -y --no-install-recommends /tmp/sp.deb; \
rm -rf /tmp/sp.deb /var/lib/apt/lists/*
LABEL org.opencontainers.image.title="chemenu-sp-live" \
org.opencontainers.image.description="Packaged Super Productivity for chemenu's live tracker suite" \
chemenu.sp-version="${SP_VERSION}"
ENV CHEMENU_LIVE_SP_BINARY="/opt/Super Productivity/superproductivity" \
CHEMENU_LIVE_SP_VERSION="${SP_VERSION}"
+26
View File
@@ -0,0 +1,26 @@
#!/bin/sh
# Which Super Productivity release, and the sha512 of its .deb, straight from the
# update channel the desktop clients themselves follow (`latest-linux.yml`).
#
# resolve-version.sh the newest release
# resolve-version.sh 19.1.0 that release
#
# Prints two lines, `version=<x>` and `sha512=<base64>`, so a workflow can append the
# output to $GITHUB_OUTPUT as it is. Gitea #156: the test image follows the channel
# rather than a pin, because installed apps update on their own and a pinned old
# version would be tested against while users run the new one.
set -eu
base=https://github.com/super-productivity/super-productivity/releases
if [ "${1:-latest}" = latest ]; then
url="$base/latest/download/latest-linux.yml"
else
url="$base/download/v$1/latest-linux.yml"
fi
yml="$(curl -fsSL "$url")"
version="$(printf '%s\n' "$yml" | sed -n 's/^version: *//p' | head -n 1)"
sha512="$(printf '%s\n' "$yml" | awk '/url: superProductivity-amd64\.deb/ {found=1; next} found && /sha512:/ {print $2; exit}')"
if [ -z "$version" ] || [ -z "$sha512" ]; then
echo "resolve-version: no version/sha512 for the amd64 .deb in $url" >&2
exit 1
fi
printf 'version=%s\nsha512=%s\n' "$version" "$sha512"