CI/CD Pipeline 是一連串自動化步驟,可以測試軟體,部屬應用程式。但實際上到底要做什麼事情呢?可以從 GitLab 的 Auto DevOps 了解。
Auto Dependency Scanning
掃描第三方函式庫的安全性漏洞。參考下圖:
dotnet list package --vulnerable
參考如下:
https://devblogs.microsoft.com/nuget/how-to-scan-nuget-packages-for-security-vulnerabilities/

測試功能性
執行 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 等等的敏感資訊。