若要執行持續整合工作和自訂工作,必須為 Code Stream 管線設定工作區。

在管線工作區中,選取類型為 Docker 或 Kubernetes,並提供相應的端點。Docker 和 Kubernetes 平台管理 Code Stream 為執行持續整合 (CI) 工作或自訂工作而部署的容器的整個生命週期。

  • Docker 工作區需要 Docker 主機端點、產生器映像 URL、映像登錄、工作目錄、快取、環境變數、CPU 限制和記憶體限制。您還可以建立 Git 存放庫的複製品。
  • Kubernetes 工作區需要 Kubernetes API 端點、產生器映像 URL、映像登錄、命名空間、NodePort、持續性磁碟區宣告 (PVC)、工作目錄、環境變數、CPU 限制和記憶體限制。您還可以建立 Git 存放庫的複製品。

管線工作區組態包含許多一般參數以及特定於工作區類型的其他參數,如下表所述。

表 1. 工作區區域、詳細資料和可用性
選取項目 說明 詳細資料和可用性
類型 工作區的類型。 可用於 Docker 或 Kubernetes。
主機端點 執行持續整合 (CI) 工作和自訂工作的主機端點。

選取 Docker 主機端點時,可用於 Docker 工作區。

選取 Kubernetes API 端點時,可用於 Kubernetes 工作區。

產生器映像 URL 產生器映像的名稱與位置。使用此映像在 Docker 主機和 Kubernetes 叢集上建立容器。持續整合 (CI) 工作和自訂工作在此容器內執行。

範例:fedora:latest

產生器映像必須具有 curlwget

映像登錄 如果產生器映像在登錄中可用,並且登錄需要認證,則必須建立映像登錄端點,然後在此處選取該端點,以便從登錄中提取映像。 可用於 Docker 和 Kubernetes 工作區。
工作目錄 工作目錄是容器內執行持續整合 (CI) 工作步驟的位置,也是 Git Webhook 觸發管線執行時複製代碼的位置。 可用於 Docker 或 Kubernetes。
命名空間 如果未輸入命名空間, Code Stream 將在您提供的 Kubernetes 叢集中建立唯一名稱。 特定於 Kubernetes 工作區。
Proxy

為了與 Kubernetes 叢集中的工作區網繭進行通訊, Code Stream 在命名空間 codestream-proxy 中為每個 Kubernetes 叢集部署一個 Proxy 執行個體。您可以根據叢集組態選取 NodePortLoadBalancer 類型。

選取哪個選項取決於已部署 Kubernetes 叢集的特性。

  • 通常,如果端點中指定的 Kubernetes API 伺服器 URL 透過其中一個主要節點公開,則選取 NodePort
  • 如果 Kubernetes API 伺服器 URL 透過負載平衡器公開,例如 Amazon EKS (Elastic Kubernetes Service),則選取 LoadBalancer
NodePort

Code Stream 使用 NodePort 與 Kubernetes 叢集中執行的容器進行通訊。

如果未選取連接埠,則 Code Stream 將使用 Kubernetes 指派的暫時連接埠。您必須確保防火牆規則的組態允許輸入暫時連接埠範圍 (30000-32767)。

如果輸入連接埠,則必須確保叢集中的其他服務尚未使用該連接埠,並且防火牆規則允許該連接埠。

特定於 Kubernetes 工作區。
持續性磁碟區宣告

為 Kubernetes 工作區提供一種在各個管線執行過程中持久保留檔案的方法。提供持續性磁碟區宣告名稱時,它可以儲存記錄、構件和快取。

如需有關建立持續性磁碟區宣告的詳細資訊,請參閱 Kubernetes 說明文件,網址為 https://kubernetes.io/docs/concepts/storage/persistent-volumes/

特定於 Kubernetes 工作區。
環境變數 管線執行時,此處傳遞的索引鍵-值配對將可用於該管線中的所有持續整合 (CI) 工作和自訂工作。

可用於 Docker 或 Kubernetes。

可以在此處傳遞對變數的參考。

在工作區中提供的環境變數將傳遞到管線中的所有持續整合 (CI) 工作和自訂工作。

如果未在此處傳遞環境變數,則必須將這些變數明確傳遞到管線中的每個持續整合 (CI) 工作和自訂工作。

CPU 限制 持續整合 (CI) 容器或自訂工作容器的 CPU 資源限制。 預設值為 1
記憶體限制 持續整合 (CI) 容器或自訂工作容器的記憶體限制。 單位為 MB
Git 複製 如果選取 Git 複製,並且 Git Webhook 叫用管線,則會將代碼複製到工作區 (容器)。 如果未啟用 Git 複製,則必須在管線中設定另一個明確持續整合 (CI) 工作以便先複製代碼,然後再執行其他步驟,例如建置和測試。
快取

Code Stream 工作區中,可以快取一組目錄或檔案,以便加快後續管線執行。這些目錄的範例包括 .m2npm_modules。如果不需要在管線執行之間快取資料,則不需要持續性磁碟區宣告。

將快取容器中的檔案或目錄之類的構件,以便在管線執行之間重複使用。例如,可以快取 node_modules.m2 資料夾。快取接受路徑清單。

例如:

workspace:
  type: K8S
  endpoint: K8S-Micro
  image: fedora:latest
  registry: Docker Registry
  path: ''
  cache:
    - /path/to/m2
    - /path/to/node_modules

特定於工作區類型。

在 Docker 工作區中,透過使用 Docker 主機中的共用路徑持久保留快取的資料、構件和記錄來實現快取

在 Kubernetes 工作區中,若要啟用快取,必須提供持續性磁碟區宣告。否則,快取將不可用。

在管線工作區中使用 Kubernetes API 端點時, Code Stream 會建立必要的 Kubernetes 資源 (如 ConfigMap、密碼和網繭) 以執行持續整合 (CI) 工作或自訂工作。 Code Stream 使用 NodePort 與容器進行通訊。

若要在各個管線執行過程中共用資料,您必須提供持續性磁碟區宣告, Code Stream 會將此持續性磁碟區宣告掛接到容器以儲存資料,並將其用於後續管線執行。