1 Commits

Author SHA1 Message Date
1112e0c1f2 Merge pull request 'feat: 使用無窮迴圈持續嘗試,直到成功取得有效狀態碼' (#1) from develop into master
All checks were successful
/ CD > 計算版本號 (push) Successful in 1s
/ CD > 發布專案 (push) Successful in 2s
Reviewed-on: #1
2026-03-25 14:09:24 +00:00
2 changed files with 12 additions and 14 deletions

View File

@@ -1,11 +1,8 @@
FROM ubuntu:latest FROM alpine:latest
# 更新並安裝必要的工具後清理暫存檔案以減小映像檔大小
RUN apt update \
&& apt install -y curl \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# 安裝必要的工具
RUN apk add --no-cache --no-check-certificate bash curl
COPY entrypoint.sh /entrypoint.sh COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh RUN chmod +x /entrypoint.sh

View File

@@ -20,18 +20,19 @@ echo "--------------------------------------------------"
# 使用無窮迴圈持續嘗試,直到成功取得有效狀態碼 # 使用無窮迴圈持續嘗試,直到成功取得有效狀態碼
while true; do while true; do
echo -n "[$(date -u +"%Y-%m-%dT%H:%M:%SZ")] $CHECK_URL ... " # 使用 curl 取得狀態碼,並將結果輸出到環境變數 STATUS_CODE
STATUS_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$CHECK_URL") && echo "STATUS_CODE=$STATUS_CODE"
# 使用 curl 取得狀態碼,最長等待 60 秒,並將結果輸出到環境變數 STATUS_CODE # curl 無法連線時常見為 000持續重試
STATUS_CODE=$(curl -s --max-time 60 -o /dev/null -w "%{http_code}" "$CHECK_URL") if [ "$STATUS_CODE" != "000" ]; then
break
fi
echo "$STATUS_CODE" && [ "$STATUS_CODE" != "000" ] && break # 休息 1 秒後重試
sleep 1
done done
# 將狀態碼輸出到環境變數 # 將狀態碼輸出到環境變數
echo "status_code=$STATUS_CODE" >> "$GITHUB_OUTPUT" echo "status_code=$STATUS_CODE" >> "$GITHUB_OUTPUT"
# 檢查狀態碼是否正確
[ "$STATUS_CODE" = "$HEALTH_CODE" ] && exit 0 || exit 1
echo "==================================================" echo "=================================================="