[FIX] 強化 CI/CD Step 2 部署腳本與錯誤診斷
1. 改進 deploy_to 函式,同時驗證 tar 與 docker exec 的結束碼,避免靜默失敗。 2. 增加同步過程的日誌輸出 (tar/docker status),提升故障排查效率。 3. 確保任一容器同步失敗時立即中斷流程,防止不完整的部署。
This commit is contained in:
parent
45b5ee5acd
commit
6eb9de4812
@ -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 &&
|
||||
|
||||
Loading…
Reference in New Issue
Block a user