4 Commits
Author SHA1 Message Date
goukiandCursor 9f1b0cf0e3 fix: restart queue/AI workers after Laravel release switch
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-26 19:12:33 +00:00
goukiandCursor b5979462f0 fix: ensure shared .env is readable by PHP before config:cache
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 15:14:18 +08:00
goukiandCursor c726bfdbd7 fix: avoid host chown after composer; prune releases in container only
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 15:09:02 +08:00
goukiandCursor c0579c502f fix: prune old releases via php container to avoid permission denied
composer-created vendor trees are not deletable by the host runner user

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-18 15:04:27 +08:00
+25 -1
View File
@@ -110,9 +110,18 @@ run chmod -R g+rwX "$host_release"
run ln -s ../../shared/.env "$host_release/.env"
run ln -s ../../shared/storage "$host_release/storage"
# PHP runs as uid/gid 1000 inside the container. act_runner often owns
# shared/.env as 0600, which makes env() empty and config:cache write NULLs.
run chgrp "$php_group" "$DEPLOY_ROOT/shared/.env"
run chmod 640 "$DEPLOY_ROOT/shared/.env"
run docker exec --user "$php_user" --workdir "$container_release" \
"$PHP_CONTAINER" composer install \
--no-dev --no-interaction --prefer-dist --optimize-autoloader
# Keep the release readable by the PHP runtime group. Do not chown on the host:
# act_runner cannot change ownership of files created inside the container.
run docker exec "$PHP_CONTAINER" sh -c \
"chown -R ${php_user} '${container_release}' && chmod -R g+rwX '${container_release}'"
if test "$dry_run" != "true"; then
bash -c "$BACKUP_COMMAND"
@@ -134,6 +143,16 @@ if test "$dry_run" != "true"; then
--workdir "$CONTAINER_DEPLOY_ROOT/current" \
"$PHP_CONTAINER" php artisan up
maintenance_enabled=false
# Ask queue workers to exit after the current job (cache signal).
artisan queue:restart || true
# Restart host daemons so they pick up the new `current` release.
if command -v systemctl >/dev/null 2>&1; then
if command -v sudo >/dev/null 2>&1 && sudo -n true 2>/dev/null; then
sudo -n systemctl try-restart new-pet-queue-worker.service new-pet-ai-worker.service || true
else
systemctl try-restart new-pet-queue-worker.service new-pet-ai-worker.service 2>/dev/null || true
fi
fi
curl --fail --silent --show-error \
--retry 6 --retry-delay 5 --retry-connrefused \
"$HEALTHCHECK_URL" >/dev/null
@@ -146,7 +165,12 @@ if test "$dry_run" != "true"; then
'
)
if test "${#old_releases[@]}" -gt 0; then
rm -rf -- "${old_releases[@]}"
for old_release in "${old_releases[@]}"; do
release_name="$(basename "$old_release")"
# Delete via the PHP container as root so vendor trees are removable.
run docker exec "$PHP_CONTAINER" \
rm -rf "$CONTAINER_DEPLOY_ROOT/releases/$release_name"
done
fi
fi