第 8 章 Builds
8.1. 构建如何工作
8.1.1. 什么是构建?
OpenShift Container Platform 中的 构建 是将输入参数转换为结果对象的过程。大多数情况下,构建用于将源代码转换为可运行的容器镜像。
构建配置或 BuildConfig
的特征就是构建策略和一个或多个源。策略决定上述过程,而源则提供输入。
构建策略有:
- Source-to-Image (S2I) (description, options)
- Pipeline (description, options)
- Docker (description, options)
- Custom (description, options)
有六种类型的源作为构建输入提供 :
每个构建策略最多可考虑或忽略特定类型的源,并确定要使用方法。Binary 和 Git 是互斥源类型。Dockerfile 和镜像可以单独单独使用,也可以与 Git 或 Binary 一起使用。Binary 源类型在 向系统指定选项中的其它选项 中是唯一的。
8.1.2. BuildConfig 是什么?
构建配置描述了单个构建定义,以及应该创建新构建时的一组 触发器。构建配置通过 BuildConfig
定义,它是一种 REST 对象,可在对 API 服务器的 POST 中使用以创建新实例。
根据您选择使用 OpenShift Container Platform 创建应用程序的方式,如果使用 Web 控制台或 CLI,通常会自动生成 BuildConfig
,并且可以随时对其进行编辑。如果选择稍后手动调整配置,则了解 BuildConfig
的组成部分及其可用选项可能会有所帮助。
以下示例 BuildConfig
在每次容器镜像标签或源代码改变时产生新的构建:
BuildConfig Object Definition
kind: "BuildConfig" apiVersion: "v1" metadata: name: "ruby-sample-build" 1 spec: runPolicy: "Serial" 2 triggers: 3 - type: "GitHub" github: secret: "secret101" - type: "Generic" generic: secret: "secret101" - type: "ImageChange" source: 4 git: uri: "https://github.com/openshift/ruby-hello-world" strategy: 5 sourceStrategy: from: kind: "ImageStreamTag" name: "ruby-20-centos7:latest" output: 6 to: kind: "ImageStreamTag" name: "origin-ruby-sample:latest" postCommit: 7 script: "bundle exec rake test"
- 1
- 此规格将创建一个名为 ruby-sample-build 的新
BuildConfig
。 - 2
runPolicy
字段控制从此构建配置创建的构建能否同时运行。默认值为Serial
,即新构建将按顺序运行,而不是同时运行。- 3
- 您可以指定导致创建新构建的触发器的列表。
- 4
source
部分定义构建的来源。源类型决定主要的输入源,可以是Git
(指向代码库存储位置)、Dockerfile
(从内联 Dockerfile 构建)或Binary
(接受二进制有效负载)。可以同时拥有多个源,请参考每种源类型的文档。- 5
strategy
部分描述用于执行构建的构建策略。您可以在此处指定Source
、Docker
或Custom
策略。上面的示例使用ruby-20-centos7
容器镜像,Source-To-Image 将用于应用程序构建。- 6
- 成功构建容器镜像后,它将被推送到
output
部分中描述的存储库。 - 7
postCommit
部分定义一个可选的 构建 hook。