# The live tracker suite, nightly (Gitea #156): the documented `task` and `review` workflow # against a real Super Productivity and a real CalDAV server, not against fakes. # # `ci.yml` already runs the CalDAV half on every push (Radicale is a pip install). This # workflow adds the half that needs the desktop app, inside the prebuilt # `chemenu-sp-live` image (`sp-live-image.yml`), and runs both, so one green night covers both # providers. # # Red after a new Super Productivity release is the finding this workflow exists for, not a # flaky night: `instructions/dev/tracker-testing.md` says what to do with it. An agent that # touched the Super Productivity surface (`tasks/superproductivity.py`, `tasks/config.py`, # the fixtures) dispatches it by hand instead of waiting for the clock. # # Runner: `linux-docker`, with the image as the job container. The image carries `nodejs`, so # `actions/checkout` runs; see ci.yml for why that is the workflow's business. name: Tracker live on: schedule: - cron: '0 5 * * *' workflow_dispatch: jobs: live: runs-on: linux-docker container: image: gitea.nehmer.net/torben/chemenu-sp-live:latest env: WIKITOOL_SESSION_ID: tracker-live-${{ github.run_id }} WIKI_TRACE_DIR: /tmp/wikitool-trace steps: - uses: actions/checkout@v7 - name: Which Super Productivity is this # act_runner pulls the job image with `forcePull=true` and no credentials (observed on # the first run, 442), so `:latest` is always the registry's current one. What can # still lag is the image itself - a release the daily build has not picked up yet. So # the run compares what is installed with what the update channel names now. run: | set -eu installed="$(dpkg-query -W -f='${Version}' superproductivity)" channel="$(.gitea/sp-live/resolve-version.sh latest | sed -n 's/^version=//p')" echo "installed: $installed, update channel: $channel" if [ "$installed" != "$channel" ]; then echo "::warning::the image carries Super Productivity $installed, the update channel names $channel - this run tests an outdated app (stale runner cache or an image not rebuilt yet)" fi - name: Tool environment run: | set -eu git config --global --add safe.directory "$GITHUB_WORKSPACE" tools/preflight.sh tools/.venv/bin/python -m pip install --quiet pytest radicale - name: Start Radicale run: .gitea/scripts/start-radicale.sh tools/.venv/bin/python /tmp/radicale - name: Live tracker suite # Both kinds are required: a night in which the app or the server was not there must # fail rather than skip. env: CHEMENU_LIVE_REQUIRE: sp,caldav run: | set -eu cd tools .venv/bin/python -m pytest -q -m live_tracker -s