[FIX] 強化 CI/CD Step 2 部署腳本與錯誤診斷

1. 改進 deploy_to 函式,同時驗證 tar 與 docker exec 的結束碼,避免靜默失敗。
2. 增加同步過程的日誌輸出 (tar/docker status),提升故障排查效率。
3. 確保任一容器同步失敗時立即中斷流程,防止不完整的部署。
This commit is contained in:
sky121113 2026-04-21 16:37:50 +08:00
parent 45b5ee5acd
commit 6eb9de4812

View File

@ -43,13 +43,28 @@ jobs:
shell: bash
run: |
deploy_to() {
tar --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . 2>/dev/null | docker exec -i "$1" tar -xf - -C /var/www/html/
# tar exit 1 = "file changed as we read it" (non-fatal), exit 2+ = fatal
[ "${PIPESTATUS[0]}" -le 1 ]
local container=$1
echo ">>> Syncing code to $container..."
tar --exclude='.git' --exclude='node_modules' --exclude='vendor' --exclude='storage' --exclude='bootstrap/cache' -cf - . \
| docker exec -i "$container" tar -xf - -C /var/www/html/
local tar_status=${PIPESTATUS[0]}
local docker_status=${PIPESTATUS[1]}
echo " Result: tar=$tar_status, docker=$docker_status"
if [ $tar_status -le 1 ] && [ $docker_status -eq 0 ]; then
return 0
else
echo "!!! Error: Sync failed for $container"
return 1
fi
}
deploy_to star-cloud-laravel
deploy_to star-cloud-queue
deploy_to star-cloud-mqtt-worker
# 依序執行同步,任一失敗即中斷
deploy_to star-cloud-laravel && \
deploy_to star-cloud-queue && \
deploy_to star-cloud-mqtt-worker && \
docker exec star-cloud-laravel sh -c "
chown -R 1000:1000 /var/www/html &&
mkdir -p /.npm && chown -R 1000:1000 /.npm &&