選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (691 個字)

每日小知識 #8 - CI_CD 流程

每日小知識 #8 - CI_CD 流程

或許有些團隊成員或們還不是完全清楚,
亦或是其他團隊所走的模式不同,
但我們整個 CI/CD 的流程目前是如下設計的。

雖然距離一百分還有一段 不短的路程
不過我會針對每一段再加上一些 自己的想法

各位在工作空閒時一同思考思考其合理性,
若有什麼想法也可以找我討論。

如果沒有太多的想法,日後應該也會針對各議題提出更具體的方案。

1. 撰寫原始碼

  • 理論上應該至少要包含單元測試(JUnit + Mockito + MockMvc + Selenium)
  • 是否嘗試導入 TDD (Test-Driven Development)
  • 如果可以的話再搭配 SonarLint And/Or SonarQube,可以察覺平常不知道的 Code Smell 或是 Bug,還是有什麼其他的工具?
  • 是否有需要用到 Design Pattern,思考是否有 OverDesign,不要為了用 DP 而 DP,因為通常類別會變得非常多,程式真的一目瞭然?
  • 註解是否足夠,方法的開始是否有標明需求與演算法,甚至是作者與日期。
  • 演算法是否能更精進,Java Collections Framework 中的類別都有善用了嗎?有沒有自己重新造輪?

2. Commit Code

  • 是否有加上整段異動的大意,好讓看整個 commit history 的時候方便找到問題點。
  • 是否有標註上 JIRA 單號?理由同上。
  • 是否有需要作 git rebase,將多次 Commit 的 message 統整成一個較完整的訊息?

3. gitlab 設定 push 的 webhook

  • 是否只有設定 master? 針對特定客戶的 Branch 是否也有設定好 webhook?
  • 是否需要 merge request/pull request? 而非直接就 push 觸發 webhook。
  • branch 的切分方式是否需要調整?e.g. git flow

4. Jenkins 的 Job 被 gitlab webhook 觸發

  • 是否一定要用 Jenkins? 付費的 Circle CI, Drone, 甚至少 gitlab CI 有沒有譜?
  • Jenkins 是否要走它的 DSL pipeline,相對直覺,但缺點是要學它的 DSL,而且 AVC 應該會整個需要大重構,優點是它整合的 plugin 相對較多。

5. Maven Build 產出 jar/war

  • 這段是否也可以在 Dockerfile 透過 multi-stage build 做?
  • 是否要用 maven 內建的 docker plugin 直接產 Image?
  • 是否需要切換成 Gradle

6. 依 Dockerfile 將 jar/war 編譯成 docker image,並 push 上 registry

  • Dockerfile 是否已遵循 Best Practice
  • 承上,資安的部份是否已做足?
  • Registry 是否有更好的管理方式?
  • 是否需要切換 Nexus 或是自架 Gitlab?

7. 透過 docker-compose 啟動或重啟某個服務

  • 這樣的作法是否能因應藍綠部署
  • 有沒有辦法透過 Ansible 自動化?
  • 該如何整頓至 Kubernetes 以有效利用資源?

以上,是我個人的一些建議與想法,
不想思考的人,也至少先記住現行的流程喔:D

每日小知識 #9 - 常用的 docker 指令
每日小知識#7-volume的種類

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2025/05/25, 週日

Captcha 圖像