OpenShift Origin中的构建是将输入参数转换为结果对象的过程。 大多数情况下,构建用于将源代码转换为可运行的容器映像。
build configuration或BuildConfig的特点是strategy和一个或多个source。strategy决定了构建过程,而source提供其输入。
openshift的构建策略有:
下面这6中source可以作为构建输入:
每个构建策略都要考虑采用或忽略某种source,并确定如何使用它。 Binary和Git是互斥的类型。 Dockerfile和Image可以彼此独立使用,也可以与Git或Binary一起使用。Binary类型在其指定给系统的其他选项中是唯一的。
build config描述了应该创建新构建时的单个构建定义和一组触发器。 构建配置由BuildConfig定义,它是一个REST对象,可以在POST中用于创建新实例的API服务器。
根据您选择使用OpenShift Origin创建应用程序的方式,如果使用Web控制台或CLI,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部分定义了构建的来源。 source类型决定了输入的主要来源,可以是Git,指向代码库位置; Dockerfile,从inline Dockerfile或Binary构建,接受二进制有效内容。 一次可以有多个source,详情请参阅每 种来源类型的文件。
#5 strategy部分描述了构建image的策略。你可以在这儿指定source,Docker或自定义策略。上面的例子使用 了"ruby-20-centos7:latest"这个容器镜像,这个镜像构建的时候使用的是s2i策略。
#6 容器镜像成功构建后,它将被推入output部分中描述的存储库。
#7 postCommit部分定义了一个可选的构建hook。
使用以下命令在当前项目中从已经存在的build configuration手动构建:
$ oc start-build <buildconfig_name>
使用--from-build
选项重新运行构建:
$ oc start-build --from-build=<build_name>
指定--follow选项,输出构建时的log:
$ oc start-build <buildconfig_name> --follow
指定--env
选项,为构建设置任何需要的环境变量:
$ oc start-build <buildconfig_name> --env=<key>=<value>
您可以通过直接推送源代码来开始构建,而不必依赖Git源代码或Dockerfile构建源代码,这可能是Git或SVN工作目录的内容,即一组您希望的预构建二进制产物部署或单个文件。 这可以通过为start-build命令指定以下选项之一来完成:
Option | Description |
---|---|
--from-dir=<directory> | 指定将被存档并用作构建的二进制输入的目录 |
--from-file=<file> | 指定一个文件,做为构建source中唯一文件。 该文件被放置在与提供的原始文件具有相同文件名的空目录的根目录中。 |
--from-repo=<local_source_repo> | 指定本地存储库的路径,以用作构建的二进制输入。 添加--commit选项以控制构建使用哪个分支,标记或提交。 |
将这些选项中的任何一个直接传递给构建时,内容将流式传输到构建并覆盖当前的构建source设置。
由二进制输入触发的构建不会保留服务器上的source,因此基础镜像更改触发的重建将使用构建配置中指定的源。
例如,以下命令将标签v2中的本地Git存储库的内容作为档案发送并开始构建:
$ oc start-build hello-world --from-repo=../hello-world --commit=v2
使用命令手动取消构建:
$ oc cancel-build <build_name>
多个构建取消:
$ oc cancel-build <build1_name> <build2_name> <build3_name>
取消所有基于某个build configuration的构建:
$ oc cancel-build bc/<buildconfig_name>
取消给定状态下的所有构建(例如,新建或挂起),忽略其他状态下的构建:
$ oc cancel-build bc/<buildconfig_name> --state=<state>
删除某个build config使用如下命令:
$ oc delete bc <BuildConfigName>
未完待续
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。