CI/CD Pipeline 是一連串自動化步驟,可以測試軟體,部屬應用程式。但實際上到底要做什麼事情呢?可以從 GitLab 的 Auto DevOps 了解。 Auto Dependency Scanning 掃描第三方函式庫的安全性漏洞。參考下圖: 如果是 .NET 6 可以用以下指令掃描: 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 等等的敏感資訊。