Add documentation for kitestacks-watcher.sh setup and throttling

Add documentation for kitestacks-watcher.sh setup and throttling
This commit is contained in:
kenpat 2026-06-06 18:21:24 +00:00
parent 3ded215d08
commit 130bc3bb9c

View file

@ -0,0 +1,80 @@
KiteStacks Forgejo Automation Watcher Script Documentation
Overview
The kitestacks-watcher.sh script is a systemd-compatible file watcher for the KiteStacks Homelab. Its main responsibilities:
Watch configured directories for file changes.
Sync changes to the correct apps/ or clusters/ folder in the repo.
Automatically bump version in README.md.
Update versioned documentation and CHANGELOG.md.
Commit and push changes to either test or main repository.
Throttle updates to prevent frequent commits when changes are rapid.
Key Features Added in This Setup
1. 20-Minute Conditional Throttling
The script now tracks the last successful push.
Commits/pushes only happen once every 20 minutes.
If changes occur multiple times within 20 minutes, they are batched into a single update.
Logs indicate skipped pushes during throttle:
[autosync] 2026-06-06 12:50:10 INFO Throttling active, skipping commit/push for 1190s
2. Initial Setup Steps
Navigate to the scripts folder:
cd ~/kitestacks-homelab-autosync-test/scripts
Make the watcher script executable:
chmod +x kitestacks-watcher.sh
Run manually to test:
./kitestacks-watcher.sh
Observe logs for startup confirmation.
Make a small change in a watched directory (e.g., apps/forgejo/README.md) to trigger the watcher.
Run in background (detach from terminal):
mkdir -p ~/logs
nohup ./kitestacks-watcher.sh > ~/logs/kitestacks-watcher.log 2>&1 &
Verify process is running:
ps aux | grep kitestacks-watcher
tail -f ~/logs/kitestacks-watcher.log
3. Optional: systemd Service
Create /etc/systemd/system/kitestacks-watcher.service:
[Unit]
Description=KiteStacks AutoSync Watcher
After=network.target
[Service]
Type=simple
User=kenpat
WorkingDirectory=/home/kenpat/kitestacks-homelab-autosync-test/scripts
ExecStart=/home/kenpat/kitestacks-homelab-autosync-test/scripts/kitestacks-watcher.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Enable and start:
sudo systemctl daemon-reload
sudo systemctl enable kitestacks-watcher.service
sudo systemctl start kitestacks-watcher.service
sudo systemctl status kitestacks-watcher.service
View logs:
journalctl -u kitestacks-watcher.service -f
4. Script Behavior Summary
Watches directories listed in $WATCH_DIRS.
Debounce period defined in $DEBOUNCE_SECONDS (default 15s) to batch rapid changes.
Maps filesystem paths to repo folders (apps/ for Docker apps, clusters/assassin/ for cluster configs).
Updates README.md version tags and generates versioned docs in docs/.
Maintains a CHANGELOG.md with automated entries.
Pushes updates to either test or main repo based on $STATE_FILE.
Throttle ensures that frequent changes do not flood the repository with commits.
5. Verification
Make a change to a file in the watched directories.
Confirm logs show sync, doc creation, and commit/push.
Multiple changes within 20 minutes are batched.
Watch for throttling messages confirming 20-minute delay between pushes.
6. Notes / Recommendations
Keep $WATCH_DIRS and $EXCLUDE_PATTERNS properly configured in settings.conf.
Use logs (~/logs/kitestacks-watcher.log) for debugging.
Manual testing is recommended after any config changes.
systemd integration ensures the watcher starts automatically on reboot.