[FIX] 用中間檔案取代 tar pipe,徹底避開 pipefail

改為先 tar -cf /tmp/deploy.tar,再 docker exec tar -xf < 檔案。
不使用 pipe = 不受 pipefail 影響。
|| [ $? -le 1 ] 讓 tar exit 1 (warning) 通過,exit 2+ 才失敗。
This commit is contained in:
sky121113 2026-04-21 17:02:07 +08:00
parent 99463a762e
commit 6603828ddc

View File

@ -42,13 +42,16 @@ jobs:
- name: Step 2 - Deploy Code
run: |
echo ">>> Syncing code to star-cloud-laravel..."
# --warning=no-file-changed: 抑制 "file changed as we read it" 警告並維持 exit 0
# 三個容器 (laravel, queue, mqtt-worker) 共享同一份 volume (.:/var/www/html),只需同步一次
tar --warning=no-file-changed \
--exclude='.git' --exclude='node_modules' --exclude='vendor' \
# 1. 打包:|| [ $? -le 1 ] 讓 exit 1 (file changed 警告) 通過exit 2+ 才視為錯誤
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/
-cf /tmp/deploy.tar . || [ $? -le 1 ]
# 2. 解壓至容器 (三個容器共享 volume同步一次即可)
docker exec -i star-cloud-laravel tar -xf - -C /var/www/html/ < /tmp/deploy.tar
rm -f /tmp/deploy.tar
# 3. 設定權限
docker exec star-cloud-laravel sh -c "
chown -R 1000:1000 /var/www/html &&
mkdir -p /.npm && chown -R 1000:1000 /.npm &&