Commit Graph

71 Commits

Author SHA1 Message Date
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
cfaa8dfe54 [FEAT] 同步生產環境部署流程至與 Demo 站一致的嚴謹架構 2026-05-15 16:22:03 +08:00
sky121113
21d1a0e3c1 [FIX] 修正標籤映射以支援 Node.js 環境 2026-05-15 16:19:18 +08:00
sky121113
9471332d49 [FIX] 解決部署流程衝突並應用生產環境本地 Runner 優化 2026-05-15 16:15:49 +08:00
sky121113
c412b9c43d [FEAT] 優化生產環境部署流程與 Runner 設定
1. 在生產環境主機 (star-cloud-prod) 安裝並啟動獨立的 act_runner (標籤: prod)。
2. 修改 .gitea/workflows/deploy-prod.yaml,將部署模式從 SSH/Rsync 改為本地 Docker 模式。
3. 確保 demo 與 prod 環境隔離,提升部署效率與安全性。
2026-05-15 16:15:16 +08:00
sky121113
bc7c94ca0d Merge branch 'dev' into demo 2026-05-15 15:53:36 +08:00
sky121113
b2e6e2567a [FIX] 實施生產環境 Runner 隔離\n\n1. 修改 deploy-prod.yaml 將 runs-on 設定為 [ubuntu-latest, prod]\n2. 確保生產環境任務只由 gitea_work 專用機器執行 2026-05-15 15:53:32 +08:00
sky121113
8262637454 Merge branch 'dev' into demo 2026-05-15 15:52:14 +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
cec0ed6394 Merge branch 'dev' into demo 2026-05-15 15:44:36 +08:00
sky121113
46dbeb59fb [CI] Update demo runner label to [self-hosted, demo] 2026-05-15 15:44:36 +08:00
sky121113
320af5c0c6 refactor(ci): use native ssh instead of appleboy/ssh-action to avoid download issues 2026-05-15 14:09:21 +08:00
sky121113
ff6cb13308 fix(ci): add apt lock waiting and check for rsync/ssh in deploy-prod 2026-05-15 14:06:12 +08:00
sky121113
12226dd7d0 [STYLE] 微調部署腳本格式
1. 刪除 deploy-prod.yaml 第 35 行的多餘空行。
2026-05-15 12:03:32 +08:00
sky121113
cb9b8b072d [FIX] 修正正式環境 CI/CD 卡在 apt-get 互動提示的問題
1. 加入 DEBIAN_FRONTEND=noninteractive 環境變數。
2. 增加 Dpkg::Options 強制自動處理設定檔衝突,避免部署掛起。
2026-05-15 11:57:51 +08:00
sky121113
c92ced4150 [FIX] 觸發正式環境 CI/CD 重新部署
1. 在 deploy-prod.yaml 新增註解以產生異動,藉此重新觸發 CI/CD 以驗證 SSH 金鑰修復後的連線狀況。
2026-05-15 11:57:18 +08:00
sky121113
e96e9dcb93 [STYLE] 調整正式站部署腳本格式
1. 微調 .gitea/workflows/deploy-prod.yaml 檔案內的空行排版。
2026-05-15 11:54:06 +08:00
sky121113
0a1109ec34 [REFACTOR] 移除舊有部署腳本範本
1. 刪除 .gitea/workflows/deploy-remote-template.yaml,因其相關邏輯已完整整合至 deploy-prod.yaml 與 deploy-demo.yaml 腳本中。
2026-05-15 11:41:16 +08:00
sky121113
24d7602f5a [FIX] 以 appleboy/ssh-action 重構正式環境部署腳本
1. 改用 appleboy/ssh-action 取代 ssh 字串指令,對齊 deploy-remote-template 的架構。
2. Step 1 改回用 rsync 同步程式碼,SSH 金鑰由 runner 自行注入,移除 shimataro/ssh-key-action 依賴。
3. 加入智慧重建判斷(Step 2):僅在 Dockerfile/compose.yaml 有變更時才執行 --build,加速一般部署。
4. 完整對齊 Step 3 的 chown / composer / npm / artisan 初始化邏輯,確保與 demo 部署行為一致。
2026-05-15 11:14:49 +08:00
sky121113
1401912059 [FIX] 重構正式環境部署腳本,改用 SSH+tar 方式同步程式碼
1. 棄用 rsync 直接同步方案,改用 tar 打包傳送再遠端解壓,與 demo 部署邏輯一致。
2. 將 docker compose 換成 docker-compose,修正 GCP 主機僅有舊版 v1 CLI 的相容問題。
3. 拆分 Step 步驟結構,對齊 demo workflow 的 Step 0~5 風格。
4. docker exec 加入 -u 1001:1001 確保產出檔案不會被 root 佔用。
2026-05-15 11:12:05 +08:00
sky121113
9031f5fd4e [FIX] 修復正式環境 CI/CD rsync 權限與 sudo 問題
1. 將 twsystem1003 加入 docker 群組,移除腳本中的 sudo 需求。
2. 在 docker exec 指令中加入 -u 1001:1001,避免產生 root 權限的編譯檔案導致 rsync 同步失敗。
2026-05-15 11:07:39 +08:00
sky121113
0278438241 [FEAT] 新增正式環境 CI/CD 自動化部署流程
1. 實作 Gitea Actions 透過 SSH 與 rsync 同步程式碼至正式環境主機 (34.84.169.132)。
2. 整合遠端 Docker 容器重啟、Composer 與 NPM 依賴安裝、前端編譯及資料庫遷移等自動化指令。
3. 加入 RoleSeeder 與 AdminUserSeeder 預設權限與帳號資料填充。
2026-05-15 11:03:04 +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
e3ad7dd44f [DOCS] 修正並對齊 Demo 環境基礎設施資訊
1. 更新 README.md 與 framework.md 中的 Demo 環境網域、伺服器指令、部署路徑。
2. 更新 Gitea Workflow (.gitea/workflows/) 中的 Gitea 官方網址 (gitea.setdomains.work)。
3. 更新遠端部署模板中的舊 IP、路徑與機器人信箱,確保全站文件一致性。
2026-04-17 10:30:05 +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