Java 管線範例

下圖顯示使用 Oracle 與開源工具之 Java 管線概念建置的範例。使用較佳的建置程序可確保品質與安全性。
cicd-process-pipeline.png 的描述如下
cicd-process-pipeline.png 圖解描述

「管線協調器」會在此 Java 管線範例中,使用一些常用的工具來驅動管線處理作業。以下是程序中的步驟:

  1. 變更代碼

    使用靜態應用程式安全測試 (SAST) 來執行證明資料的基本 Git 檢查,並起始管線。根據使用工具 (例如 GitLab 或 GithHub) 建構程式碼的方式,使用 Gitflow 處理程式碼儲存區域。代碼的結構可具有版本分支、合併與發行,以控制來源變更。程式碼對應至開發、測試、預先生產及生產等環境。確認至儲存區域的不同部分會觸發 Sast 動作。

    • 例如,GitHub 會併入靜態安全掃描,以尋找在程式碼和組態檔中辨識密碼和記號的樣式。
  2. 建構代碼

    產生 JAR/WAR/EAR 並提取必要的相依性。您可以使用 Java Apache Maven 等工具來編譯和建立 JAR (或相關的可部署存檔檔案) 並簽署使用者自建物件。

    • 管理第三方相依性:使用 Snyk 之類的工具來管理程式碼相依性和第三方程式庫。同步檢查並確保相依性是正確的、來自接受的來源,以及搜尋惡意內容。它會擷取、檢查、核准及儲存外部相依性使用者自建物件。管理第三方相依性可讓您使用 Archiva、Nexus OSS 等工具,以本機方式儲存我們的相依性。您也可以控制相依性,以確保它們具有信任的來源。這可確保相依性不會受到 Snyk、Nexus 或 scanOS 等惡意內容的危害。
  3. 檢查品質與合規

    掃描 OWASP 前 10 個問題,並使用 Sonarcube 或 Lint 等工具檢查編碼標準的規範。

  4. 執行單位測試

    使用 JACOCO 與 JUnit 執行單位測試並擷取代碼涵蓋範圍資料。JACOCO 提供涵蓋範圍集合,例如尋找執行哪一行程式碼,以及以統計方式測試多少程式碼。JUnit 會執行單元測試。如果您認為有幫助,可以選擇展開描述。

  5. 執行 API 測試

    使用 Dredd、Apiary 或 Swagger Hub 等工具測試 API 及測試從屬端。

  6. 測試元件與 UX

    測試黑盒子元件與任何 UI 元素。衡量績效,以確保沒有任何基本問題。使用 Selenium 和 JMeter 等工具收集測試涵蓋範圍度量。JMeter 會執行使用者體驗和效能測試,並測試使用者工作流程。Selenium 會驅動使用者介面元素的練習。

  7. 測試安全性

    漏洞的測試程式碼,例如它如何處理非法的 API 呼叫、過多的有效負載、注入攻擊等使用 Zap。檢查冗餘程式碼與準備的 SQL 敘述句以執行安全測試。

  8. 部署的套裝程式

    使用 Docker Snyk 等工具,將解決方案作為容器封裝、驗證封裝,以及檢查容器問題和最佳做法。

  9. 產生文件

    產生有用的文件並使其可供使用。使用 Pandoc 或 Doxygen 等工具簽署藝術品。Pandoc 會將專案推送至下一個階段,並將專案新增至信任的商店,例如下一個階段要使用的登錄。

如果有任何步驟失敗,或處理程序發現太多警告,建置就會失敗。組建在處理作業中的任何時間點都可能會失敗,因此無法繼續進行後續步驟。建構失敗,會阻止任何已設定的自動化程式碼促銷。您可以使用一些建議的工具來建置多個階段,以支援在每個階段執行測試。例如,系統層次測試可以使用 API 測試工具,作為外部服務與系統互動,而不是模擬企業解決方案中另一個元件的動作。