SAP 電商雲 Spartacus UI 的持續整合 - Continous integration
在將程式碼整合到我們的開發主線之前,會執行一個持續整合過程以證明可以安全地整合更改。
我們將 Travis CI 用於我們的持續整合服務。
每次將程式碼推送到 Spartacus 儲存庫時(無論是否已發出拉取請求),都會觸發我們公共 Travis CI 中的構建。對於我們所有的庫,構建執行以下步驟:
- 檢查更漂亮的合規性
- 檢查 tslint 合規性
- 執行所有單元測試
- 執行 Sonar 檢查
- 構建 Spartacus 專案源
- 釋出快照構建
Travis CI 構建的配置可以在 Spartacus 專案根目錄的 .travis.yml 檔案中找到。
端到端測試
觸發構建時,還會在 Jenkins 伺服器上觸發並行過程,該伺服器執行我們庫的所有端到端 (E2E) 測試。 E2E 測試結果報告為通過或未通過 GitHub 上的 Pull Request 檢查。
遺憾的是,目前 Jenkins 伺服器未公開,因此外部貢獻者無法看到 E2E 測試結果。我們希望在不久的將來過渡到公共伺服器。
Contributing Integration Libraries to Spartacus
以下整合庫由 Spartacus 核心團隊釋出,但歸相關整合團隊所有:
- Context-Driven Services
- Configurable Products
- CPQ Configurable Products
- SAP Customer Data Cloud
- SAP Digital Payments
Integration Library Guidelines
對於向 Spartacus 貢獻整合庫的任何團隊,建議遵循以下準則:
-
例如,您應該在 Spartacus 儲存庫中有自己的單獨分支,例如 integration/cds。
-
您應該儘可能多地合併來自開發分支的最新更改(以避免合併衝突)。
-
您需要將構建、驗證和測試步驟新增到分支上的 .travis.yml 檔案中,這樣您就可以描述您的持續整合過程。您需要包含您認為對庫的持續整合所必需的測試和驗證。
-
您不必在 CI 過程中執行所有 Spartacus 核心驗證(儘管可能會建議這樣做)。
-
在嘗試將整合庫本身合併到 Spartacus 主開發分支(或將新更改合併到開發分支)時,核心團隊將對其進行完整驗證,包括迴歸測試。這將不包括整合測試。作為整合庫所有者,您需要確保您的整合是穩定的,並且它通過了要釋出的所有要求。
-
整合庫釋出後,您有責任在後續版本中保持其穩定。
Reasoning Behind This Approach
Spartacus 建立在 Travis CI 之上。 必要的構建步驟在 travis.yml 檔案中進行了描述,並且每個分支僅支援一個構建檔案。 因此,為特定整合設定單獨的分支允許每個整合團隊自定義他們的構建。
Spartacus 團隊沒有足夠的頻寬來執行每個整合庫的所有驗證和測試作為每個構建的一部分。 同時,整合團隊也不應該需要對所有核心 Spartacus 程式碼執行驗證。