本卡屬 FR-167(母卡 CM-3241),卡 P2-4,階段 P2 更新站、批 3。只改 BE(主 repo,Repo 欄空著)。依賴:P1-9a、P2-2。
CI 出完包自動向更新站登記一筆草稿:先打更新站拿到該放哪個 R2 路徑,再把包、release.json、雜湊檔上傳。token 從 CI 變數來,repo 裡不能有。
一支腳本接兩邊
extend:package job 加一步;R2 上傳用 aws cli S3 相容端點(CI 變數 R2_ACCESS_KEY_ID/R2_SECRET_ACCESS_KEY/UPDATE_SITE_CI_TOKEN,不入 repo);上傳 key 由更新站回,腳本不自己拼主版號資料夾
repo:~/Projects/Billows/Audit-Manager/compliance-manager-be
改既有:.gitlab-ci.yml package job
新開:scripts/build/publish_draft.sh
細節在 design.md §5 對應段(~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/design.md,開 design.html 看導覽);本段只列本卡要做到的點:
scripts/build/publish_draft.sh <版> <bundle目錄>:① POST $UPDATE_SITE_URL/admin/releases/register-draft(Bearer $UPDATE_SITE_CI_TOKEN,body 版號+release.json)→ 回 r2_key_prefix;② aws s3 cp --endpoint-url $R2_S3_ENDPOINT 三個檔到該 prefix;缺任何變數立刻紅並說缺哪個。.gitlab-ci.yml package job 末尾加一行呼叫;變數名 UPDATE_SITE_URL/UPDATE_SITE_CI_TOKEN/R2_ACCESS_KEY_ID/R2_SECRET_ACCESS_KEY/R2_S3_ENDPOINT(先 grep 全 repo 無同義變數)。wrangler dev 與 wrangler dev 的 R2 模擬跑通;glab ci lint;repo 內 grep 不到任何 token。glab ci lint 綠;publish_draft.sh 對本機 wrangler dev 與假 R2(--r2-endpoint 指向本機 MinIO 或 wrangler dev 的 r2 模擬)跑通;沒給 token 時立刻紅、訊息說缺哪個 CI 變數;repo 內 grep 不到任何 token。不跑 pipeline
測試期(不是你做):這張卡在 190 的真實情境是「跑一次 tag pipeline:R2 有 releases/<版>/ 兩檔、更新站後台出現草稿;token 缺時 job 紅且訊息清楚」,由首腦在測試期操作、決策者看畫面。你只要確保上面的本機驗收全過、程式對這個情境沒有寫死假設。
對照雛形:~/Projects/Billows/Audit-Manager/compliance-manager-be/docs/features/FR-167-2610-online-update-channel/prototype/index.html(上方「跟著走」)。