要在 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 中添加项目

您将需要一个 Git Webhook,它允许 Code Stream 在开发人员提交代码更改时使用 Git 触发器来触发您的管道。请参见如何使用 Code Stream 中的 Git 触发器运行管道

生成工具集:

  • 生成类型,例如 Maven。
  • 您使用的所有后处理生成工具,例如 JUnit、JaCoCo、Checkstyle 和 FindBugs。

发布工具:

  • 诸如 Docker 等工具,该工具将部署生成容器。
  • 映像标记,该标记是提交 ID 或内部版本号。

生成工作区:

  • Docker 生成主机,该主机是 Docker 端点。
  • 映像注册表。管道的 CI 部分将从所选注册表端点提取映像。容器将运行 CI 任务,并部署映像。如果注册表需要凭据,则必须创建映像注册表端点,然后在此处选择该端点,以便主机可以从注册表提取映像。
  • 生成器映像的 URL,该映像将创建持续集成任务在其中运行的容器。

计划持续交付 (CD) 阶段

要计划管道的 CD 阶段,您需要设置外部要求和内部要求,并确定需要在智能管道模板的 CD 部分中输入的信息。

所需的基于云的端点或远程内部部署端点:

  • Kubernetes 端点,以便 Code Stream 可以将映像部署到 Kubernetes 集群。

环境类型和文件:

  • Code Stream 将应用程序部署到的所有环境类型,例如,开发和生产。智能管道模板将根据所选环境类型在管道中创建各个阶段和任务。
    表 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。

有关详细示例,请参见如何持续将来自 GitHub 或 GitLab 存储库的代码集成到 Code Stream 中的管道