專案

一般

配置概況

動作

Maintain #245

已結束

Gitlab-ci.yaml 更新優化

是由 andy chiang8 個月 前加入. 於 3 個月 前更新.

狀態:
Close
優先權:
LOW
被分派者:
開始日期:
2025-07-04
完成日期:
2025-12-16
完成百分比:

100%


概述

Gitlab-ci.yaml 更新優化作業逐步進行。

目前每個服務都有自己的 gitlab-ci.yaml,若需要優化則須針對每個服務作業,20個服務就必須手動更新20次。
為減輕維護負擔,將統一一份 gitlab-ci.yaml,讓所有服務去吃這份。


檔案

是由 andy chiang8 個月 前更新


目前已建立 CICD 專案,公版放這。並已優化公版格式。

是由 andy chiang8 個月 前更新 · 已被編輯

  • 完成百分比10 變更為 20

是由 andy chiang8 個月 前更新 · 已被編輯

  • 完成百分比20 變更為 30

是由 andy chiang8 個月 前更新

這支 .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-demotag-deploy-aws-eks-mix-demotag-test-aws-eks-mix-demo

SIT 環境(aws-eks-mix-sit)

  • tag-build-aws-eks-mix-sittag-deploy-aws-eks-mix-sittag-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 chiang7 個月 前更新

因執行內容結構不同,需分成模型以及Java兩份腳本

是由 andy chiang7 個月 前更新



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

是由 andy chiang4 個月 前更新

  • 狀態Ongoing 變更為 Pending

是由 andy chiang3 個月 前更新

  • 完成日期 設定為 2025-12-16
  • 狀態Pending 變更為 Close
  • 完成百分比50 變更為 100
動作

匯出至 Atom PDF