7.6. 二进制构建
7.6.1. 简介
OpenShift 中的二进制构建功能使开发人员能够将源或工件直接上传到构建中,而不是从 Git 存储库 URL 中拉取源。任何带有 source、Docker 或 custom 的 BuildConfig 都可以作为二进制构建启动。从本地工件启动构建时,现有源引用将被替换为来自本地用户机器的源。
源可以通过几种方法提供,它们对应于使用 start-build 命令时可用的参数:
-
来自一个文件(
--from-file
):构建整个源都由一个文件组成,就会出现这种情况。例如,它可能是用于 Wildfly 构建的 Docker 构建、pom.xml
的Dockerfile
,或用于 Ruby 构建的Gemfile
。 -
来自一个目录(
--directory
):当源位于本地目录且未提交到 Git 存储库时,请使用此选项。start-build
命令将创建给定目录的存档,并将它上传到构建器,作为来源。 -
来自存档(
--from-archive
):当存档和源已存在时,请使用此选项。归档可以是tar
、tar.gz
或zip
格式。 -
来自 Git 存储库(
--from-repo
):这是用于当前用户本地计算机上的 Git 存储库一部分的源。当前存储库的 HEAD 提交将存档,并发送到 OpenShift 以进行构建。
7.6.1.1. 使用案例
二进制构建删除了构建从现有 Git 存储库拉取源的要求。使用二进制构建的原因包括:
- 构建和测试本地代码更改.可以从公共存储库中的源克隆,可以将本地更改上传到 OpenShift 中以进行构建。本地更改不必在任何位置提交或推送。
- 构建私有代码.新的构建可以从头开始作为二进制构建。然后源可以直接从本地工作站上传到 OpenShift,而无需将其签入到 SCM。
- 使用来自其他源的工件构建镜像。使用 Jenkins 管道时,二进制构建可用于将构建工件与 Maven 或 C 编译器等工具组合使用这些构建的运行时镜像。
7.6.1.2. 限制:
- 二进制构建不可重复。因为二进制构建需要用户在启动时上传工件,所以 OpenShift 无法重复同一构建,而无需用户每次都重复执行相同的上传。
- 无法自动触发二进制构建。只有当用户上传所需的二进制工件时,才能手动启动。
注意
作为二进制构建启动的构建可能也具有配置的源 URL。如果是这种情况,触发器将成功启动构建,但源来自配置的源 URL,而不是用户上次运行构建时提供的源 URL。