5.3. Custom 构建
采用 Custom 构建策略时,开发人员可以定义负责整个构建过程的特定构建器镜像。通过利用自己的构建器镜像,可以自定义构建流程。
自定义构建器(Custom builder)镜像是嵌入了构建过程逻辑的普通 Docker 格式容器镜像,例如用于构建 RPM 或基础镜像。
Custom 构建以级别很高的特权运行,默认情况下不可供用户使用。只有可赋予集群管理权限的用户才应被授予运行自定义构建的权限。
5.3.1. 使用 FROM 镜像进行自定义构建
您可以使用 customStrategy.from
部分来指示要用于自定义构建的镜像。
流程
设置 customStrategy.from
部分:
strategy: customStrategy: from: kind: "DockerImage" name: "openshift/sti-image-builder"
5.3.2. 在自定义构建中使用 secret
除了可以添加到所有构建类型的源和镜像的 secret 之外,自定义策略还允许向构建器 Pod 添加任意 secret 列表。
流程
将各个 secret 挂载到特定位置:
strategy: customStrategy: secrets: - secretSource: 1 name: "secret1" mountPath: "/tmp/secret1" 2 - secretSource: name: "secret2" mountPath: "/tmp/secret2"
5.3.3. 使用环境变量进行自定义构建
要将环境变量提供给 Custom 构建过程使用,可在 BuildConfig
的 customStrategy
定义中添加环境变量。
这里定义的环境变量将传递给运行自定义构建的 Pod。
流程
定义在构建期间使用的自定义 HTTP 代理:
customStrategy: ... env: - name: "HTTP_PROXY" value: "http://myproxy.net:5187/"
集群管理员还可以使用 Ansible 配置全局构建设置。
您也可以使用 oc set env
命令管理 BuildConfig
中定义的环境变量。
5.3.4. 使用自定义构建器镜像
OpenShift Container Platform 的 Custom 构建策略允许您定义负责整个构建过程的特定构建器镜像,旨在填补因创建容器镜像日益普及而造成的空缺。如果构建仍然需要生成各种工件(例如,软件包、JAR、WAR、可安装 ZIP 和基础镜像),采用 Custom 构建策略的自定义构建器镜像是填补这一空缺的理想选择。
自定义构建器镜像是嵌入了构建过程逻辑的普通容器镜像,例如用于构建 RPM 或基本容器镜像的逻辑。
此外,自定义构建器还允许实施任何扩展构建过程,例如运行单元或集成测试的 CI/CD 流。
要充分利用 Custom 构建策略的优势,您必须了解如何创建能够构建所需对象的自定义构建器镜像。
5.3.4.1. 自定义构建器镜像
在调用时,自定义构建器镜像将接收以下环境变量以及继续进行构建所需要的信息:
变量名称 | 描述 |
---|---|
|
|
| 包含要构建的源代码的 Git 存储库的 URL。 |
|
使用与 |
| 指定要在构建时使用的 Git 存储库的子目录。只有定义后才出现。 |
| 要构建的 Git 引用。 |
| 创建此构建对象的 OpenShift Container Platform master 的版本。 |
| 镜像要推送到的容器镜像 registry。 |
| 所构建镜像的容器镜像标签名称。 |
|
用于运行 |
5.3.4.2. 自定义构建器工作流
虽然自定义构建器镜像作者在定义构建过程时具有很大的灵活性,但构建器镜像仍必须遵循如下必要的步骤,才能在 OpenShift Container Platform 内无缝运行构建:
-
Build
对象定义包含有关构建的输入参数的所有必要信息。 - 运行构建过程。
- 如果构建生成了镜像,则将其推送到构建的输出位置(若已定义)。可通过环境变量传递其他输出位置。