Files
release-cleanup/entrypoint.sh
T
JefferyandClaude Opus 4.8 7ac64709b9 feat(release-cleanup): 改為 Node 主程式並容器化
將 action 由 bash(curl/jq) 改寫為 Node 主程式 app/index.js(沿用原清理邏輯:
正式版與 beta 版各自保留 KEEP_COUNT 筆、刪除多餘 release 與未綁定 release 的 tag),
entrypoint.sh 改為輸出橫幅後 exec node 主程式,Dockerfile 改用 node alpine 六步結構,
並補上 app/package.json 與 action.yaml 輸入說明。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 12:41:10 +08:00

41 lines
2.2 KiB
Bash
Executable File

#!/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 "$@"