要在 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 中添加项目。
您将需要一个 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 文件也用于 CD 智能管道模板,例如,以下用例示例:要在智能模板中应用该文件,请单击选择,并选择 Kubernetes YAML 文件。然后单击处理。智能管道模板将显示可用的服务和部署环境。需要选择服务、集群端点和部署策略。例如,要使用 Canary 部署模型,请选择 Canary 并输入部署阶段所占的百分比。
有关使用智能管道模板创建适用于蓝绿部署的管道的示例,请参见如何将 Code Stream 中的应用程序部署到蓝绿部署。
如何使用智能管道模板创建 CICD 管道
收集所有信息并设置所需的内容后,下文介绍了如何从 CICD 智能管道模板创建管道。
在“管道”中,您需要选择
。
选择 CICD 智能管道模板。
填写模板,并使用模板创建的阶段保存管道。如果需要进行任何最终更改,可以编辑并保存管道。
然后启用并运行管道。管道运行后,可以进行以下检查:
- 确认管道已成功完成。单击执行,然后搜索管道。如果失败,请更正任何错误并再次运行。
- 确认 Git Webhook 运行正常。Git 活动选项卡将显示事件。单击 。
- 查看管道仪表板并检查趋势。单击仪表板,然后搜索您的管道仪表板。您还可以创建自定义仪表板以报告其他 KPI。
有关详细示例,请参见如何持续将来自 GitHub 或 GitLab 存储库的代码集成到 Code Stream 中的管道。