要运行持续集成任务和自定义任务,必须为 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 工作区。
代理

为了与 Kubernetes 集群中的工作区 Pod 进行通信,Code Stream 在命名空间 codestream-proxy 中为每个 Kubernetes 集群部署一个代理实例。您可以根据集群配置选择 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、密钥和 Pod)以运行持续集成 (CI) 任务或自定义任务。Code Stream 使用 NodePort 与容器进行通信。

要在各个管道运行过程中共享数据,您必须提供持久卷声明,Code Stream 会将此持久卷声明挂载到容器以存储数据,并将其用于后续管道运行。

在 Kubernetes 工作区中,使用基于证书的身份验证的内部部署 Kubernetes API 端点时,必须确保云代理更新为最新版本。否则,身份验证可能会失败。