Commit Graph

42 Commits

Author SHA1 Message Date
sky121113
1864df0fc2 [FEAT] 調整 demo 部署流程的 Docker 映像檔清理策略
1. 修改 .gitea/workflows/deploy-demo.yaml,將 Step 5 - Cleanup 步驟從跳過清理改為執行 docker image prune -f --filter "until=168h",自動清理超過 168 小時(一週)的過期 Docker 映像檔,釋放主機磁碟空間。
2026-06-03 17:12:08 +08:00
sky121113
e55fade6d7 [FEAT] 調整部署工作流以保留 Docker 建置快取
1. 修改 .gitea/workflows/deploy-demo.yaml,將 Step 5 - Cleanup 的 prune 動作替換為 echo 跳過,以保留 Docker 建置快取。
2026-06-03 16:41:07 +08:00
sky121113
2cad7290e5 [STYLE] 移除部署工作流中的多餘空行
1. 移除 .gitea/workflows/deploy-demo.yaml 檔案中 Step 1 - Build & Deploy Containers 前方的多餘空白行。
2026-06-03 16:02:19 +08:00
sky121113
928a1a8370 [STYLE] 調整 Demo 部署標籤為 ubuntu-latest 搭配 demo\n\n1. 將 runs-on 修改為 [ubuntu-latest, demo]\n2. 此舉能確保使用 Runner 預設的 ubuntu 環境標籤並精確鎖定至 demo 專用機 2026-05-15 15:52:06 +08:00
sky121113
46dbeb59fb [CI] Update demo runner label to [self-hosted, demo] 2026-05-15 15:44:36 +08:00
sky121113
a8b150cadc [FIX] 移除 CI/CD 中不存在的 emqx_ctl 指令 2026-04-22 13:37:59 +08:00
sky121113
4b8436e6c2 [REFACTOR] 移除 MQTT $SYS 監聽機制並優化 CI/CD 流程
1. 移除 MQTT Gateway 對 $SYS 系統主題的訂閱與解析邏輯,改由遺囑 (Last Will) 統一處理上下線狀態。
2. 更新 EMQX ACL 設定,移除 Gateway 的系統主題存取權限。
3. 優化 CI/CD 流程 (deploy-demo.yaml):將 EMQX 重啟改為熱重載 (Reload),並新增 MQTT Worker 自動重啟。
2026-04-22 13:33:42 +08:00
sky121113
6603828ddc [FIX] 用中間檔案取代 tar pipe,徹底避開 pipefail
改為先 tar -cf /tmp/deploy.tar,再 docker exec tar -xf < 檔案。
不使用 pipe = 不受 pipefail 影響。
|| [ $? -le 1 ] 讓 tar exit 1 (warning) 通過,exit 2+ 才失敗。
2026-04-21 17:02:07 +08:00
sky121113
99463a762e [REFACTOR] 簡化 CI/CD 部署腳本 - 從根本解決 tar 問題
問題根源:
- tar 的 'file changed as we read it' 是警告 (exit 1),非錯誤
- 之前用 PIPESTATUS、pipefail toggle、wait_for_container 等 workaround
  處理,導致腳本越來越複雜且脆弱

根本解法:
1. tar --warning=no-file-changed: 讓 tar 忽略此警告並維持 exit 0
2. 三個容器共享同一份 volume,只需同步一次到主容器
3. 移除所有 workaround 程式碼 (PIPESTATUS/pipefail/wait_for_container)

Step 2 從 ~50 行縮減至 ~15 行。
2026-04-21 16:59:27 +08:00
sky121113
a15eeabde7 [FIX] 修復 pipefail 導致 tar 警告中斷部署腳本
Gitea Actions 的 bash shell 預設啟用 set -eo pipefail。
tar 的 exit 1 (file changed as we read it) 是警告非錯誤,
但 pipefail 會讓它變成管線失敗,set -e 立即中斷腳本。

修復:在 tar 管線前暫時 set +o pipefail,
手動檢查 PIPESTATUS 後再恢復 set -o pipefail。
2026-04-21 16:57:03 +08:00
sky121113
d3cb9b4fee [FIX] 根因修復 - 共享 Volume 下不需對每個容器重複同步
根因:三個容器 (laravel, queue, mqtt-worker) 共享同一份
volume mount (.:/var/www/html)。對 laravel 容器做 tar 同步時,
queue/mqtt-worker 會同時看到檔案變動,導致它們 crash → restart。
接著對 queue 容器做冗餘同步時就會撞上 restarting 狀態。

修復:
1. 只對主容器 (star-cloud-laravel) 同步一次即可
2. 同步完成後等待 worker 容器從短暫重啟中恢復
3. 移除對 queue/mqtt-worker 的冗餘 tar 同步
2026-04-21 16:54:45 +08:00
sky121113
88741dc5ae [FIX] 修復 CI/CD 部署時序競爭 - 容器重啟導致 docker exec 隨機失敗
根因:queue/mqtt-worker 容器可能處於 restarting 狀態,
docker exec 在此狀態下會被拒絕 (exit 1),導致部署隨機失敗。

修復:在 deploy_to 函式中加入 wait_for_container 重試邏輯,
在執行 docker exec 前先等待容器進入 running 狀態 (最多 30 秒)。
2026-04-21 16:52:45 +08:00
sky121113
240667d74f [FIX] 修正 CI/CD Bash PIPESTATUS 重置問題
1. 將 tar_status 與 docker_status 的賦值合併到同一行,解決 local 指令會重置 PIPESTATUS 導致變數為空的問題。
2. 增加變數非空檢查,預防非預期的語法錯誤。
3. 加強錯誤輸出的 Debug 資訊。
2026-04-21 16:39:08 +08:00
sky121113
6eb9de4812 [FIX] 強化 CI/CD Step 2 部署腳本與錯誤診斷
1. 改進 deploy_to 函式,同時驗證 tar 與 docker exec 的結束碼,避免靜默失敗。
2. 增加同步過程的日誌輸出 (tar/docker status),提升故障排查效率。
3. 確保任一容器同步失敗時立即中斷流程,防止不完整的部署。
2026-04-21 16:37:50 +08:00
sky121113
2aa0bf23ab [FIX] 優化 CI/CD 部署流程與更新 MQTT 心跳規範
1. 修復 .gitea/workflows/deploy-demo.yaml:改用 bash 函式處理 tar 同步,容許 exit code 1 (檔案變動警告) 並攔截致命錯誤。
2. 更新 .agents/skills/mqtt-communication-specs/SKILL.md:簡化心跳上報 (Heartbeat) 規範,僅保留 firmware_version 與 temperature 欄位。
2026-04-21 16:01:32 +08:00
sky121113
2bc467bb84 [FIX] 修復 CI/CD 部署時 tar 因檔案變動而報錯的問題
1. 在 deploy-demo.yaml 的 tar 指令加入 --ignore-failed-read 預防非致命報錯。
2. 排除 storage 與 bootstrap/cache 目錄的上傳,避免與容器內運作中的檔案衝突。
2026-04-21 15:52:09 +08:00
sky121113
9844607e84 perf(ci): use tar stream for deployment to improve stability 2026-04-21 14:44:02 +08:00
sky121113
c3b623e5e0 [FIX] 修正 CI/CD 中 docker run 的掛載問題,使用 pipe 方式同步設定檔 2026-04-21 13:13:26 +08:00
sky121113
15c0db6742 [REFACTOR] 整理並合併 CI/CD 準備步驟 (Step 0) 2026-04-21 13:11:58 +08:00
sky121113
cec70f38b5 [FIX] 增加 Step 0.2 同步設定檔至宿主機,解決 EMQX 掛載失敗問題 2026-04-21 13:08:12 +08:00
sky121113
cc966f2de7 [FIX] 優化 CI/CD 掛載邏輯,避免 Docker 自動誤建目錄 2026-04-21 13:06:20 +08:00
sky121113
6ef7e2211c [FIX] 修正 CI/CD .env 被誤建為目錄的問題 2026-04-21 13:04:41 +08:00
sky121113
bb426abbc0 [FIX] 修正 CI/CD 掛載錯誤,增加 acl.conf 目錄清理步驟 2026-04-21 13:02:44 +08:00
sky121113
f4f2ca9175 [STYLE] 調整 Workflow 檔案格式
1. 移除 .gitea/workflows/deploy-demo.yaml 中多餘的空行以符合規範。
2026-04-21 08:53:51 +08:00
sky121113
3a31a1a593 [STYLE] 調整 Workflow 檔案格式以符合規範
1. 在 .gitea/workflows/deploy-demo.yaml 中優化程式碼區塊間距。
2026-04-21 08:23:56 +08:00
sky121113
bf43a33df3 [FEAT] 整合 MQTT 資料流自動化與環境埠號修復
1. 整合 MQTT Gateway 並支援動態 Redis Key 前綴隔離,解決多環境衝突。
2. 修正本地開發環境與 Demo 環境的埠號映射 (80/8080) 與 Vite HMR (5175) 設定。
3. 更新 CI/CD 部署流程,新增自動同步程式碼至 MQTT Worker 與 Queue 容器。
4. 擴充 .env.example 以提供完整的 MQTT/EMQX 相關變數範本。
5. 更新模擬腳本以符合現有測試資料。
2026-04-17 13:22:46 +08:00
sky121113
2de80cd1bf fix: ensure .env is visible to docker compose up for environment variable interpolation 2026-04-16 17:22:12 +08:00
sky121113
420263680d fix: chown /.npm cache and clean stale node_modules for npm install 2026-04-16 17:11:54 +08:00
sky121113
ebc8b7943f fix: chown after docker cp to fix composer permission denied 2026-04-16 17:08:45 +08:00
sky121113
3cacf9d80f fix: use docker cp to inject source code into container (bypass volume mount issue) 2026-04-16 17:06:59 +08:00
sky121113
d8f41e87b4 fix: force no-cache build to ensure composer is installed in image 2026-04-16 16:31:42 +08:00
sky121113
daddfe0f85 fix: use bash and export PATH to resolve composer not found in docker exec 2026-04-16 16:28:06 +08:00
sky121113
4b8e9f7025 fix: align container name with compose.yaml in gitea actions 2026-04-16 16:14:21 +08:00
sky121113
b56bdc624b fix: correct docker-compose filename in workflow 2026-04-16 15:15:50 +08:00
sky121113
b90e05a91a fix: switch to ubuntu-latest labels for compatibility with current runner 2026-04-16 15:12:14 +08:00
sky121113
566448fe94 chore: setup gitea actions internal deployment for demo-sc-103 2026-04-16 15:07:15 +08:00
sky121113
f60e5a9c72 [FEAT] 優化機台 API 通訊識別、補齊前端必填驗證、並配置 Demo 站隊列自動化部署 🦾🚀 2026-03-26 13:09:48 +08:00
sky121113
cd34724c76 [FIX] 在部署流程中加入 php artisan storage:link 以確保頭像與靜態資源連結正常 2026-03-18 09:36:58 +08:00
sky121113
42f96d54c3 [FIX] 修正部署流程:錨定 rsync 排除路徑,確保 resources/views/vendor 資料夾能正確同步 2026-03-13 17:40:31 +08:00
sky121113
56daf8940b [FEAT] 優化部署流程:加入 RoleSeeder 與 AdminUserSeeder,並實作權限系統基礎架構與多租戶隔離機制 2026-03-13 17:35:22 +08:00
sky121113
21e064ff91 [FIX] 強制 HTTPS 與信任代理以修正 Mixed Content 問題,並加入 CI/CD 自動同步 main 邏輯 2026-03-06 17:16:00 +08:00
sky121113
2a6170b4ce [STYLE] 重構 CI/CD 文件名為 deploy-demo.yaml 以對齊 ERP UI 規範 2026-03-06 17:07:02 +08:00