CI/CD Pipeline

CI/CD Pipeline

更新於 發佈於 閱讀時間約 4 分鐘

CI/CD Pipeline 是一連串自動化步驟,可以測試軟體,部屬應用程式。但實際上到底要做什麼事情呢?可以從 GitLab 的 Auto DevOps 了解。

Auto Dependency Scanning

掃描第三方函式庫的安全性漏洞。參考下圖:

raw-image

如果是 .NET 6 可以用以下指令掃描:

dotnet list package --vulnerable

參考如下:

https://devblogs.microsoft.com/nuget/how-to-scan-nuget-packages-for-security-vulnerabilities/
raw-image

測試功能性

執行 Unit Test、Integration Test,確保這次程式碼的調整,沒有改壞現有功能。

Auto Code Quality

https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html

https://gitlab.com/gitlab-org/ci-cd/codequality

Auto Code Quality 是靜態程式碼分析,也會將報告附在 Merge Request、Pipeline 上。GitLab 是使用 Code Climate 做程式碼分析,但已經包成 codequality 這個 Docker Image。

除了 Code Climate,還有 SonarQube 之類的軟體可以使用。

Auto Container Scanning

https://docs.gitlab.com/ee/user/application_security/container_scanning/

掃描 Docker Image 的漏洞,因為 Docker Image 上可能有安裝不少的軟體,這些軟體可能 6 個月後發現安全性上的問題。掃描出問題後,可以盡快的更新相關軟體,避免安全性上的問題。

Auto Review Apps

https://docs.gitlab.com/ee/ci/review_apps/

Review App 可以讓我們看 feature branch 的功能。當審核通過後,才合併到 Dev branch。

Auto Deploy

https://docs.gitlab.com/ee/topics/autodevops/stages.html#auto-deploy

自動部屬到 Kubernetes 上,是採用 Push Model,也就是 CI/CD Pipeline 主動更新 Kubernetes。

Auto Static Application Security Testing (SAST)

https://docs.gitlab.com/ee/user/application_security/sast/

靜態程式碼分析,專門掃描安全性的問題。

Auto Dynamic Application Security Testing (DAST)

https://docs.gitlab.com/ee/user/application_security/dast/

對運行中的程式執行安全性測試。

Auto Secret Detection

https://docs.gitlab.com/ee/user/application_security/secret_detection/

https://github.com/zricethezav/gitleaks

gitleaks detect -v

掃描程式碼,看有沒有密碼、API token 等等的敏感資訊。

avatar-img
C# 工匠的 DevOps 旅程
5會員
12內容數
專注於 C#, DevOps 的工程師
留言
avatar-img
留言分享你的想法!
本文探討 C# 非同步程式設計時應注意的幾個要點,包括全面採用非同步模式、避免混用同步與非同步程式碼、勿使用async void、以及正確使用CancellationToken等。這些建議不僅有助於提升程式的效能,也可以減少Deadlock等問題,讓開發者更有效地處理異常情況,確保應用程式的穩定性.
Code Coverage 是什麼? 程式碼覆蓋率(Code Coverage)是一種軟體測試指標,用百分比表示,數值越高越好。
本文介紹瞭如何在C#專案中建立和使用packages.lock.json檔案,以確保每次執行dotnet restore時都可以獲得相同的packages集合。我們還討論了dotnet restore抓取不同packages的原因,並提供了相關的解決方案。
本文探討 C# 非同步程式設計時應注意的幾個要點,包括全面採用非同步模式、避免混用同步與非同步程式碼、勿使用async void、以及正確使用CancellationToken等。這些建議不僅有助於提升程式的效能,也可以減少Deadlock等問題,讓開發者更有效地處理異常情況,確保應用程式的穩定性.
Code Coverage 是什麼? 程式碼覆蓋率(Code Coverage)是一種軟體測試指標,用百分比表示,數值越高越好。
本文介紹瞭如何在C#專案中建立和使用packages.lock.json檔案,以確保每次執行dotnet restore時都可以獲得相同的packages集合。我們還討論了dotnet restore抓取不同packages的原因,並提供了相關的解決方案。