動作
Maintain #245
已結束Gitlab-ci.yaml 更新優化
開始日期:
2025-07-04
完成日期:
2025-12-16
完成百分比:
100%
概述
Gitlab-ci.yaml 更新優化作業逐步進行。
目前每個服務都有自己的 gitlab-ci.yaml,若需要優化則須針對每個服務作業,20個服務就必須手動更新20次。
為減輕維護負擔,將統一一份 gitlab-ci.yaml,讓所有服務去吃這份。
檔案
是由 andy chiang 於 8 個月 前更新
- 檔案 clipboard-202507041047-0gqh6.png clipboard-202507041047-0gqh6.png 已新增
- 完成百分比 從 0 變更為 10

目前已建立 CICD 專案,公版放這。並已優化公版格式。
是由 andy chiang 於 8 個月 前更新 · 已被編輯
是由 andy chiang 於 8 個月 前更新
這支 .gitlab-ci.yml 是多階段、跨環境的 GitLab CI/CD 設計,分為 開發階段(Merge Request 驅動)與 正式標籤階段(Tag 驅動)。以下為分段說明:
1. stages: 定義所有階段流程順序¶
stages:
- dev-k8s-build
- dev-k8s-check
- dev-k8s-checkdependency
- dev-k8s-deploy
- dev-k8s-test
- tag-build-aws-eks-mix-demo
...
這會讓 GitLab 知道每個 Job 所屬的階段,以及執行順序。
2. 開發環境 - Merge Request 流程(以 label 控制)¶
dev-k8s-build¶
建置開發用版本,產出 VERSION 並保存為 build.env:
rules:
- if: $CI_MERGE_REQUEST_LABELS == 'ws-k8s-dev' && $CI_PIPELINE_SOURCE == 'merge_request_event'
dev-k8s-check¶
SonarQube 程式碼檢查,允許失敗(allow_failure: true)
dev-k8s-checkdependency¶
使用 trivy 掃描依賴漏洞,輸出報告 trivy-report.json
dev-k8s-deploy¶
部署至 dev-k8s 環境
dev-k8s-test¶
執行單元測試(需等 deploy 完才跑)
3. Tag 觸發的部署流程(CI_COMMIT_TAG_ENV 決定環境)¶
共用邏輯¶
這些 Job 會根據 $CI_COMMIT_TAG_ENV 變數來執行,舉例:
rules:
- if: $CI_COMMIT_TAG_ENV == 'aws-eks-mix-sit'
會由你設定的 GitLab CI 變數解析,例如:
Tag: v1.0.3
CI_COMMIT_TAG_ENV: aws-eks-mix-sit
各環境的流程結構¶
DEMO 環境(aws-eks-mix-demo)¶
-
tag-build-aws-eks-mix-demo→tag-deploy-aws-eks-mix-demo→tag-test-aws-eks-mix-demo
SIT 環境(aws-eks-mix-sit)¶
-
tag-build-aws-eks-mix-sit→tag-deploy-aws-eks-mix-sit→tag-test-aws-eks-mix-sit
UAT 環境(aws-eks-mix-uat)¶
- 可加上條件跳過部署與測試:
rules:
- if: $CI_COMMIT_TAG_ENV == 'aws-eks-mix-uat' && $CI_MOD != 'build_only'
這樣可以透過 CI_MOD=build_only 避免部署/測試(只建置)
PRD 環境(aws-eks-prd)¶
- 同樣支援跳過部署測試邏輯
- 注意:deploy.sh 和 unit-test.sh 的參數是 sit-k8s,如需更清楚區分 PRD,建議調整為 prd-k8s 更直觀
總結:這份 CI/CD 適合場景¶
- 針對 Merge Request 使用 label 控制 dev 環境流程
- 使用 tag 推送正式環境(sit/uat/demo/prd)
- 每個環境依照命名規則建置不同 module、執行對應腳本
- 使用
needs串接流程,讓部署/測試等 job 必須等待前面完成 - 可動態調整執行(例如用
$CI_MOD控制跳過部署)
是由 andy chiang 於 7 個月 前更新
- 檔案 clipboard-202508111045-mnqca.png clipboard-202508111045-mnqca.png 已新增
- 完成百分比 從 40 變更為 50

因執行內容結構不同,需分成模型以及Java兩份腳本
是由 andy chiang 於 7 個月 前更新
- 檔案 clipboard-202508111046-enzvn.png clipboard-202508111046-enzvn.png 已新增
- 檔案 clipboard-202508111046-00bda.png clipboard-202508111046-00bda.png 已新增
- 檔案 clipboard-202508111047-qyocg.png clipboard-202508111047-qyocg.png 已新增



後續發現有專案的 spring 有做統整,而非依照資料夾,所以公板路徑配置會有所不同,需統一或是例外處置
動作