No description
Find a file
Jeena 71319a7587 auto-update: Stop treating script noise as success
Both service scripts piped their output through 'tail -5' under
'pipefail', so the exit status came from tail, not the upgrade —
failures looked like success and nothing was sent to the classifier.
For PieFed the problem was worse: deploy.sh starts a service that no
longer exists and pybabel exits 1 on translation errors, so the strict
invocation aborted after stopping the services and left the site down.
Run it plainly (it manages fine without set -e, same as manually) and
judge success by the live service state plus an HTTP check instead of
the exit code.

A Mastodon update that fails now reports its real output and status.
2026-10-06 22:10:10 +09:00
services auto-update: Stop treating script noise as success 2026-10-06 22:10:10 +09:00
systemd fix: Wait for network before running update checks 2026-05-17 06:13:35 +00:00
tests feat: Add AI-driven auto-update & restructure into package 2026-04-09 12:49:57 +00:00
update_monitor classifier: Add fallback model for transient LLM failures 2026-10-06 22:10:07 +09:00
.env.sample classifier: Add fallback model for transient LLM failures 2026-10-06 22:10:07 +09:00
.gitignore chore: Ignore all egg-info directories in .gitignore 2026-03-19 04:20:30 +00:00
AGENTS.md feat: Add update checker tooling 2026-03-12 12:50:08 +00:00
BACKLOG.md feat: Add Uptime Kuma version check via Socket.IO 2026-03-19 04:17:18 +00:00
pyproject.toml feat: Add Uptime Kuma version check via Socket.IO 2026-03-19 04:17:18 +00:00
README.md feat: Add Uptime Kuma version check via Socket.IO 2026-03-19 04:17:18 +00:00
test_classifier.py classifier: Point at gemma4:26b and retry transient fetches 2026-09-14 05:37:37 +00:00

service-update-alerts

Small Python script to compare running service versions against upstream releases.

Requirements

  • Python 3.10+

Setup

Create and activate a virtual environment, then install dependencies:

python -m venv .venv
source .venv/bin/activate
pip install -e .[dev]

Copy .env.sample to .env and fill required values. Export the variables before running the script:

export PAPERLESS_API_TOKEN=...
export FRESHRSS_USERNAME=...
export FRESHRSS_PASSWORD=...
export MATRIX_HOMESERVER=...
export MATRIX_ROOM_ID=...
export MATRIX_ACCESS_TOKEN=...
export UPTIME_KUMA_PUSH_URL=...
export UPTIME_KUMA_USERNAME=...
export UPTIME_KUMA_PASSWORD=...

The script also reads .env automatically if present.

The Matrix bot will attempt to join the configured room automatically if it is not already a member.

Usage

python3 check_updates.py --config services.yaml
python3 check_updates.py --config services.yaml --all

Tests

python -m pytest

To run live integration checks against the real services:

RUN_LIVE_TESTS=1 python -m pytest tests/test_live_services.py

Systemd (user)

Copy the unit files and enable the timer:

mkdir -p ~/.config/systemd/user
cp systemd/service-update-alerts.service ~/.config/systemd/user/
cp systemd/service-update-alerts.timer ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now service-update-alerts.timer

View logs:

journalctl --user -u service-update-alerts.service