若要在 Code Stream 中建立持續整合和持續交付 (CICD) 管線,您可以使用 CICD 智慧管線範本。若要規劃 CICD 原生建置,您需要在此範例計劃中建立管線之前收集智慧管線範本的資訊。

若要建立 CICD 管線,您必須規劃管線的持續整合 (CI) 和持續交付 (CD) 階段。

在智慧管線範本中輸入資訊並將其儲存後,它會建立包含階段和工作的管線。它還會根據所選環境類型 (例如,開發和生產) 指示映像的部署目標。管線會發佈容器映像,並執行運行所需的動作。執行管線後,您可以監控管線執行中的趨勢。

當管線包含來自 Docker Hub 的映像時,您必須在執行管線之前確保該映像已內嵌 cURLwget。當管線執行時,Code Stream 將下載使用 cURLwget 執行命令的二進位檔案。

如需設定工作區的相關資訊,請參閱設定管線工作區

規劃持續整合 (CI) 階段

若要規劃管線的 CI 階段,您將設定外部和內部需求,並確定智慧管線範本的 CI 部分所需的資訊。以下是摘要。

此範例使用 Docker 工作區。

您將需要以下雲端式或遠端內部部署端點和存放庫:

  • 原始程式碼存放庫,開發人員將代碼簽入到該存放庫中。當開發人員認可變更時,Code Stream 會將最新程式碼提取到管線。
  • 開發人員原始程式碼所在的存放庫的 Git 端點。
  • 用於 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 檔案,然後按一下處理。智慧管線範本會顯示可用的服務和部署環境。選取服務、叢集端點和部署策略。例如,若要使用 Canary 部署模型,請選取Canary,並輸入部署階段的百分比:

    智慧管線範本可以處理 Canary、輪流升級,以及藍綠部署持續整合和持續交付部署。

若要查看使用智慧管線範本為藍綠部署建立管線的範例,請參閱如何在 Code Stream 中將應用程式部署至藍綠部署

如何使用智慧管線範本建立 CICD 管線

收集所有資訊並設定所需內容後,您可以從 CICD 智慧管線範本建立管線。

在管線中,您將選取新增管線 > 智慧範本

建立管線時,您可以使用智慧管線範本。

將選取 CICD 智慧管線範本。

您可以按一下 CICD 智慧管線範本卡來建立持續整合和持續交付管線。

您將填寫範本,然後儲存管線及其建立的階段。如果需要進行任何最終變更,您可以編輯管線並將其儲存。

CICD 智慧管線範本會建立具有階段的管線,這些階段會建置和發佈應用程式並將其交付至開發和生產環境。

然後,您將啟用管線並加以執行。執行後,您可以查看以下內容:

  • 確認您的管線已成功。按一下執行,並搜尋您的管線。如果失敗,請更正任何錯誤並再執行一次。
  • 確認 Git webhook 運作正常。Git 活動索引標籤隨即顯示事件。按一下觸發器 > Git > 活動
  • 查看管線儀表板,並檢查趨勢。按一下儀表板,並搜尋管線儀表板。您也可以建立自訂儀表板對其他 KPI 進行報告。

如需詳細範例,請參閱如何在 Code Stream 中將 GitHub 或 GitLab 存放庫中的程式碼持續整合到管線