若要在 Code Stream 中建立持續整合和持續交付 (CICD) 管線,您可以使用 CICD 智慧管線範本。若要規劃 CICD 原生建置,您需要在此範例計劃中建立管線之前收集智慧管線範本的資訊。
若要建立 CICD 管線,您必須規劃管線的持續整合 (CI) 和持續交付 (CD) 階段。
在智慧管線範本中輸入資訊並將其儲存後,它會建立包含階段和工作的管線。它還會根據所選環境類型 (例如,開發和生產) 指示映像的部署目標。管線會發佈容器映像,並執行運行所需的動作。執行管線後,您可以監控管線執行中的趨勢。
當管線包含來自 Docker Hub 的映像時,您必須在執行管線之前確保該映像已內嵌 cURL 或 wget。當管線執行時, Code Stream 將下載使用 cURL 或 wget 執行命令的二進位檔案。
如需設定工作區的相關資訊,請參閱設定管線工作區。
規劃持續整合 (CI) 階段
若要規劃管線的 CI 階段,您將設定外部和內部需求,並確定智慧管線範本的 CI 部分所需的資訊。以下是摘要。
此範例使用 Docker 工作區。
您將需要的端點和存放庫:
- 原始程式碼存放庫,開發人員將代碼簽入到該存放庫中。當開發人員認可變更時, Code Stream 會將最新程式碼提取到管線。
- 存放庫的 GitHub-Enterprise、GitLab-Enterprise 或 Bitbucket-Enterprise 服務類型端點,開發人員原始程式碼駐留在該端點。
- 用於 Docker 建置主機的 Docker 端點,將在容器內執行建置命令。
- Kubernetes 端點,可讓 Code Stream 將您的映像部署到 Kubernetes 叢集。
- 產生器映像,用於建立執行持續整合測試的容器。
- 映像登錄端點,可讓 Docker 建置主機從中提取產生器映像。
您將需要專案的存取權。專案會對所有工作進行分組,包括您的管線、端點和儀表板。確認您是 Code Stream 中的專案的成員。如果您不是管理員,請要求 Code Stream 管理員將您新增為專案成員。請參閱如何在 Code Stream 中新增專案。
您將需要可讓 Code Stream 使用 Git 觸發器的 Git webhook,當開發人員 commit 程式碼變更時,會觸發管線。請參閱如何在 Code Stream 中使用 Git 觸發器執行管線。
您的建置工具集:
- 您的建置類型,例如 Maven。
- 您使用的所有後續處理建置工具,例如 JUnit、JaCoCo、Checkstyle 和 FindBugs。
您的發佈工具:
- 將部署建置容器的工具,例如 Docker。
- 映像標籤,即認可識別碼或組建編號。
您的建置工作區:
- Docker 建置主機,即 Docker 端點。
- 映像登錄。管線的 CI 部分會從選取的登錄端點提取映像。容器會執行 CI 工作並部署映像。如果登錄需要認證,您必須建立映像登錄端點,然後在此處選取該端點,以便主機可以從登錄提取映像。
- 產生器映像的 URL,用於建立執行持續整合工作的容器。
規劃持續交付 (CD) 階段
若要規劃管線的 CD 階段,您將設定外部和內部需求,並確定要在智慧管線範本的 CD 部分中輸入的資訊。
您將需要的端點:
- Kubernetes 端點,可讓 Code Stream 將您的映像部署到 Kubernetes 叢集。
環境類型和檔案:
- Code Stream 將在其中部署應用程式的所有環境類型,例如 Dev 和 Prod。智慧管線範本會根據您選取的環境類型建立管線中的階段和工作。
表 1. CICD 智慧管線範本建立的管線階段 管線內容 執行的作業 建置 - 發佈階段 建置並測試您的程式碼、建立產生器映像,以及將映像發佈到 Docker 主機。 開發階段 使用開發 Amazon Web Services (AWS) 叢集來建立並部署您的映像。在此階段中,您可以在叢集上建立命名空間,並建立秘密金鑰。 生產階段 使用 VMware Tanzu Kubernetes Grid Integrated Edition (先前稱為 VMware Enterprise PKS) 的生產版本,將映像部署到生產 Kubernetes 叢集。 - 在 CICD 智慧管線範本的 CD 區段中選取的 Kubernetes YAML 檔案。
Kubernetes YAML 檔案包含命名空間、服務和部署的三個必填區段,以及密碼的一個可選區段。如果您打算透過從專有存放庫下載映像來建立管線,則必須包含具有 Docker 組態密碼的區段。 如果建立的管線僅使用公開可用的映像,則不需要密碼。下列範例 YAML 檔案包含四個區段。
apiVersion: v1 kind: Namespace metadata: name: codestream namespace: codestream --- apiVersion: v1 data: .dockerconfigjson: eyJhdXRocyI6eyJodHRwczovL2luZ1234567890lci5pby92MS8iOnsidXNlcm5hbWUiOiJhdXRvbWF0aW9uYmV0YSIsInBhc3N3b3JkIjoiVk13YXJlQDEyMyIsImVtYWlsIjoiYXV0b21hdGlvbmJldGF1c2VyQGdtYWlsLmNvbSIsImF1dGgiOiJZWFYwYjIxaGRHbHZibUpsZEdFNlZrMTNZWEpsUURFeU13PT0ifX19 kind: Secret metadata: name: dockerhub-secret namespace: codestream type: kubernetes.io/dockerconfigjson --- apiVersion: v1 kind: Service metadata: name: codestream-demo namespace: codestream labels: app: codestream-demo spec: ports: - port: 80 selector: app: codestream-demo tier: frontend type: LoadBalancer --- apiVersion: apps/v1 kind: Deployment metadata: name: codestream-demo namespace: codestream labels: app: codestream-demo spec: replicas: 10 selector: matchLabels: app: codestream-demo tier: frontend template: metadata: labels: app: codestream-demo tier: frontend spec: containers: - name: codestream-demo image: automationbeta/codestream-demo:01 ports: - containerPort: 80 name: codestream-demo imagePullSecrets: - name: dockerhub-secret
備註: Kubernetes YAML 檔案也用於 CD 智慧管線範本,例如在下列使用案例範例中:若要在智慧範本中套用該檔案,請按一下選取,選取 Kubernetes YAML 檔案,然後按一下處理。智慧管線範本會顯示可用的服務和部署環境。選取服務、叢集端點和部署策略。例如,若要使用 Canary 部署模型,請選取Canary,並輸入部署階段的百分比:
若要查看使用智慧管線範本為藍綠部署建立管線的範例,請參閱如何在 Code Stream 中將應用程式部署至藍綠部署。
如何使用智慧管線範本建立 CICD 管線
收集所有資訊並設定所需內容後,您可以從 CICD 智慧管線範本建立管線。
在管線中,您將選取
。
將選取 CICD 智慧管線範本。
您將填寫範本,然後儲存管線及其建立的階段。如果需要進行任何最終變更,您可以編輯管線並將其儲存。
然後,您將啟用管線並加以執行。執行後,您可以查看以下內容:
- 確認您的管線已成功。按一下執行,並搜尋您的管線。如果失敗,請更正任何錯誤並再執行一次。
- 確認 Git webhook 運作正常。Git 活動索引標籤隨即顯示事件。按一下 。
- 查看管線儀表板,並檢查趨勢。按一下儀表板,並搜尋管線儀表板。您也可以建立自訂儀表板對其他 KPI 進行報告。
如需詳細範例,請參閱如何在 Code Stream 中將 GitHub 或 GitLab 存放庫中的程式碼持續整合到管線。