43 lines
2.5 KiB
Bash
Executable File
43 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
# =============================================================================
|
|
# 此指令檔的用途:
|
|
# 本檔為 Release Cleanup action 的容器啟動腳本(container entrypoint)。
|
|
# 啟動時先輸出一段橫幅,顯示 action 名稱/用途/更新時間,方便在 CI/CD log
|
|
# 中辨識正在執行哪一個 action 及其版本;接著以 exec 啟動 node 主程式
|
|
# /app/index.js,並把所有外部傳入的參數原樣交給它。
|
|
#
|
|
# 更新日期(台灣時區 Asia/Taipei):2026/07/01 09:14:10
|
|
# =============================================================================
|
|
|
|
# 啟用「遇到任何指令失敗(非 0 結束碼)即立刻中止腳本」的模式。
|
|
# 用於避免前置步驟失敗後仍繼續往下執行,確保啟動失敗能正確反映成非 0 exit code。
|
|
set -e
|
|
|
|
# action 顯示名稱,供下方橫幅輸出使用。
|
|
ACTION_NAME='Release Cleanup'
|
|
# action 用途說明,供下方橫幅輸出使用。
|
|
ACTION_DESC='清理舊成品'
|
|
# action 更新時間(固定字串,台灣時區),供下方橫幅輸出使用。
|
|
ACTION_UPDATED='2026/07/01 09:14:10'
|
|
|
|
# 輸出一個空行 + 分隔線,作為橫幅的上邊框,讓 log 中的資訊區塊更易閱讀。
|
|
printf '\n%s\n' '=================================================='
|
|
# 輸出 action 名稱;以 "$ACTION_NAME" 帶引號傳入,避免變數內容被分詞或萬用字元展開。
|
|
printf '名稱 : %s\n' "$ACTION_NAME"
|
|
# 輸出 action 用途;同樣以帶引號變數傳入確保字串完整。
|
|
printf '用途 : %s\n' "$ACTION_DESC"
|
|
# 輸出 action 更新時間;同樣以帶引號變數傳入確保字串完整。
|
|
printf '更新 : %s\n' "$ACTION_UPDATED"
|
|
# 輸出分隔線,作為橫幅的下邊框。
|
|
printf '%s\n' '=================================================='
|
|
|
|
# 以 exec 啟動 node 主程式:exec 會用 node 行程「取代」目前的 shell 行程,
|
|
# 而非另開子行程。如此可讓 node 成為 PID 1(或直接承接原 shell 的 PID),
|
|
# 正確接收容器傳來的訊號(例如 SIGTERM/SIGINT)以利優雅關閉,
|
|
# 並讓 node 的結束碼直接成為容器的結束碼。
|
|
# 路徑 /app/index.js 必須與 Dockerfile 的 COPY app/ /app/ 一致:主程式進入點被複製到 /app/ 下,
|
|
# 兩處若不同步(例如改了 WORKDIR 或複製目的地)會導致此處找不到檔案而啟動失敗。
|
|
# "$@" 將腳本收到的所有參數原樣(逐一保留分隔,避免被重新分詞)轉交給 node 主程式。
|
|
exec node /app/index.js "$@"
|