[FIX] 修復 pipefail 導致 tar 警告中斷部署腳本

Gitea Actions 的 bash shell 預設啟用 set -eo pipefail。
tar 的 exit 1 (file changed as we read it) 是警告非錯誤,
但 pipefail 會讓它變成管線失敗,set -e 立即中斷腳本。

修復:在 tar 管線前暫時 set +o pipefail,
手動檢查 PIPESTATUS 後再恢復 set -o pipefail。
This commit is contained in:
sky121113 2026-04-21 16:57:03 +08:00
parent d3cb9b4fee
commit a15eeabde7

View File

@ -63,10 +63,15 @@ jobs:
echo ">>> Syncing code to star-cloud-laravel..."
# 三個容器共享同一份 volume (.:/var/www/html)
# 只需同步至主容器一次queue/mqtt-worker 會自動看到變更。
#
# 注意tar 在檔案讀取過程中若被修改會回傳 exit 1 (警告,非錯誤)。
# Gitea Actions 預設啟用 pipefail會讓此警告變成管線失敗故需暫時關閉。
set +o pipefail
tar --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . \
| docker exec -i star-cloud-laravel tar -xf - -C /var/www/html/
local_tar=${PIPESTATUS[0]} local_docker=${PIPESTATUS[1]}
set -o pipefail
echo " Result: tar=$local_tar, docker=$local_docker"
if [ "$local_tar" -gt 1 ] || [ "$local_docker" -ne 0 ]; then
echo "!!! Error: Sync failed (tar=$local_tar, docker=$local_docker)"