fix(deploy): push-workers.sh chowns + preserves .env

Rsync ran as root over SSH so files landed root-owned, but workers run
as voidworkers — the service couldn't even reach the venv binary.
Now: chown -R voidworkers after rsync, run venv create + pip install
under `su voidworkers -c`. Also excludes .env, .gitignore, .pytest_cache
so they survive across deploys.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
root
2026-06-01 10:06:29 +10:00
parent 3d82f0e5d5
commit 2adeae555d

View File

@@ -12,16 +12,23 @@ rsync -avz --delete \
--exclude __pycache__ \
--exclude '*.egg-info' \
--exclude tests \
--exclude .env \
--exclude .gitignore \
--exclude .pytest_cache \
workers/ "$TARGET:$REMOTE_DIR/"
ssh "$TARGET" "
# rsync runs as root → files land root-owned. Workers run as voidworkers.
chown -R voidworkers: $REMOTE_DIR
su voidworkers -c '
cd $REMOTE_DIR
if [ ! -d venv ]; then
python3.12 -m venv venv
python3 -m venv venv
fi
. venv/bin/activate
pip install --quiet --upgrade pip
pip install --quiet -e '.[all]'
pip install --quiet -e \".[all]\"
'
systemctl restart void-workers
"
echo "Workers deployed."