Add documentation for kitestacks-watcher.sh setup and throttling
Add documentation for kitestacks-watcher.sh setup and throttling
This commit is contained in:
parent
3ded215d08
commit
130bc3bb9c
1 changed files with 80 additions and 0 deletions
80
KiteStacks Forgejo Automation – Watcher Script Documentation
Normal file
80
KiteStacks Forgejo Automation – Watcher Script Documentation
Normal 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.
|
||||
Reference in a new issue