#!/usr/bin/env sh # ============================================================================= # 此指令檔的用途: # 本檔為 Release Cleanup action 的容器啟動腳本(container entrypoint)。 # 啟動時先輸出一段橫幅,顯示 action 名稱/用途/更新時間,方便在 CI/CD log # 中辨識正在執行哪一個 action 及其版本;接著以 exec 啟動 node 主程式 # /app/index.js,並把所有外部傳入的參數原樣交給它。 # # 更新日期(台灣時區):2026/06/30 12:02:55 # ============================================================================= # 啟用「遇到任何指令失敗(非 0 結束碼)即立刻中止腳本」的模式。 # 用於避免前置步驟失敗後仍繼續往下執行,確保啟動失敗能正確反映成非 0 exit code。 set -e # action 顯示名稱,供下方橫幅輸出使用。 ACTION_NAME='Release Cleanup' # action 用途說明,供下方橫幅輸出使用。 ACTION_DESC='清理舊成品' # action 更新時間(固定字串,台灣時區),供下方橫幅輸出使用。 ACTION_UPDATED='2026/06/30 12:02:55' # 輸出一個空行 + 分隔線,作為橫幅的上邊框,讓 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 的結束碼直接成為容器的結束碼。 # "$@" 將腳本收到的所有參數原樣(逐一保留分隔,避免被重新分詞)轉交給 node 主程式。 exec node /app/index.js "$@"