使用构建
第 1 章 运行构建 复制链接链接已复制到粘贴板!
安装构建后,您可以创建 buildah 或 source-to-image 构建以供使用。您还可以删除构建不需要的自定义资源。
1.1. 创建 buildah 构建 复制链接链接已复制到粘贴板!
您可以创建 buildah 构建,并将创建的镜像推送到目标 registry。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift Operator 的构建。
-
您已创建了
ShipwrightBuild资源。 -
已安装
ocCLI。 -
可选: 已安装
shpCLI。
流程
创建
Build资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
ocCLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shpCLIshp build create buildah-golang-build \ --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="buildah-build" \ --strategy-name="buildah" \ --dockerfile="Dockerfile" \ --output-image="image-registry.openshift-image-registry.svc:5000/buildah-example/go-app"
$ shp build create buildah-golang-build \ --source-url="https://github.com/redhat-openshift-builds/samples" --source-context-dir="buildah-build" \1 --strategy-name="buildah" \2 --dockerfile="Dockerfile" \3 --output-image="image-registry.openshift-image-registry.svc:5000/buildah-example/go-app"4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 检查是否创建了
Build资源:示例: 使用
ocCLIoc get builds.shipwright.io buildah-golang-build
$ oc get builds.shipwright.io buildah-golang-buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shpCLIshp build list
$ shp build listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
BuildRun资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
ocCLICopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.build.name字段表示要运行的相应构建,该构建应该在同一个命名空间中可用。
示例: 使用
shpCLIshp build run buildah-golang-build --follow
$ shp build run buildah-golang-build --follow1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:通过使用-
follow标志,您可以在输出结果中查看构建日志。
运行以下命令之一检查
BuildRun资源是否已创建:示例: 使用
ocCLIoc get buildrun buildah-golang-buildrun
$ oc get buildrun buildah-golang-buildrunCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shpCLIshp buildrun list
$ shp buildrun listCopy to Clipboard Copied! Toggle word wrap Toggle overflow BuildRun资源创建一个TaskRun资源,然后创建 Pod 来执行构建策略步骤。
验证
所有容器完成其任务后,验证以下内容:
检查 pod 是否显示
STATUS字段为Completed:oc get pods -w
$ oc get pods -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE buildah-golang-buildrun-dtrg2-pod 2/2 Running 0 4s buildah-golang-buildrun-dtrg2-pod 1/2 NotReady 0 7s buildah-golang-buildrun-dtrg2-pod 0/2 Completed 0 55s
NAME READY STATUS RESTARTS AGE buildah-golang-buildrun-dtrg2-pod 2/2 Running 0 4s buildah-golang-buildrun-dtrg2-pod 1/2 NotReady 0 7s buildah-golang-buildrun-dtrg2-pod 0/2 Completed 0 55sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
TaskRun资源是否显示SUCCEEDED字段为True:oc get tr
$ oc get trCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME buildah-golang-buildrun-dtrg2 True Succeeded 11m 8m51s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME buildah-golang-buildrun-dtrg2 True Succeeded 11m 8m51sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
BuildRun资源是否将SUCCEEDED字段显示为True:oc get br
$ oc get brCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME buildah-golang-buildrun True Succeeded 13m 11m
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME buildah-golang-buildrun True Succeeded 13m 11mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在验证过程中,如果构建失败,您可以检查
BuildRun资源中的status.failureDetails字段,以识别 pod 或容器中故障的确切点。注意pod 可能会切换到
NotReady状态,因为其中一个容器完成了其任务。这是预期的行为。
验证镜像是否已推送到
build.spec.output.image字段中指定的 registry。您可以从可以访问内部 registry 的节点运行以下命令来拉取镜像:podman pull image-registry.openshift-image-registry.svc:5000/<project>/<image>
$ podman pull image-registry.openshift-image-registry.svc:5000/<project>/<image>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建
Build资源时使用的项目名称和镜像名称。例如,您可以使用buildah-example作为项目名称,sample-go-app作为镜像名称。
1.1.1. 在网络限制的环境中创建 buildah 构建 复制链接链接已复制到粘贴板!
您可以通过镜像 buildah 构建策略所需的镜像,在网络限制环境中创建 buildah 构建。
先决条件
- 集群可以连接并与可用于创建 buildah 构建的 git 源进行交互。
流程
运行以下命令镜像
buildah构建策略所需的镜像:oc image mirror --insecure -a <registry_authentication> registry.redhat.io/ubi8/buildah@sha256:1c89cc3cab0ac0fc7387c1fe5e63443468219aab6fd531c8dad6d22fd999819e <mirror_registry>/<repo>/ubi8_buildah
$ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/ubi8/buildah@sha256:1c89cc3cab0ac0fc7387c1fe5e63443468219aab6fd531c8dad6d22fd999819e <mirror_registry>/<repo>/ubi8_buildahCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 执行"创建 buildah 构建"部分中所述的步骤。
1.2. 创建 Source-to-image 构建 复制链接链接已复制到粘贴板!
您可以创建 Source-to-image 构建,并将创建的镜像推送到自定义 Quay 存储库。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift Operator 的构建。
-
您已创建了
ShipwrightBuild资源。 -
已安装
ocCLI。 -
可选: 已安装
shpCLI。
流程
创建
Build资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
ocCLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shpCLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 检查是否创建了
Build资源:示例: 使用
ocCLIoc get builds.shipwright.io s2i-nodejs-build
$ oc get builds.shipwright.io s2i-nodejs-buildCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shpCLIshp build list
$ shp build listCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
BuildRun资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
ocCLICopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.build.name字段表示要运行的相应构建,该构建应该在同一个命名空间中可用。
示例: 使用
shpCLIshp build run s2i-nodejs-build --follow
$ shp build run s2i-nodejs-build --follow1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:通过使用-
follow标志,您可以在输出结果中查看构建日志。
运行以下命令之一检查
BuildRun资源是否已创建:示例: 使用
ocCLIoc get buildrun s2i-nodejs-buildrun
$ oc get buildrun s2i-nodejs-buildrunCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shpCLIshp buildrun list
$ shp buildrun listCopy to Clipboard Copied! Toggle word wrap Toggle overflow BuildRun资源创建一个TaskRun资源,然后创建 Pod 来执行构建策略步骤。
验证
所有容器完成其任务后,验证以下内容:
检查 pod 是否显示
STATUS字段为Completed:oc get pods -w
$ oc get pods -wCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE s2i-nodejs-buildrun-phxxm-pod 2/2 Running 0 10s s2i-nodejs-buildrun-phxxm-pod 1/2 NotReady 0 14s s2i-nodejs-buildrun-phxxm-pod 0/2 Completed 0 2m
NAME READY STATUS RESTARTS AGE s2i-nodejs-buildrun-phxxm-pod 2/2 Running 0 10s s2i-nodejs-buildrun-phxxm-pod 1/2 NotReady 0 14s s2i-nodejs-buildrun-phxxm-pod 0/2 Completed 0 2mCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
TaskRun资源是否显示SUCCEEDED字段为True:oc get tr
$ oc get trCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun-phxxm True Succeeded 2m39s 13s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun-phxxm True Succeeded 2m39s 13sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
BuildRun资源是否将SUCCEEDED字段显示为True:oc get br
$ oc get brCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun True Succeeded 2m41s 15s
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun True Succeeded 2m41s 15sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在验证过程中,如果构建失败,您可以检查
BuildRun资源中的status.failureDetails字段,以识别 pod 或容器中故障的确切点。注意pod 可能会切换到
NotReady状态,因为其中一个容器完成了其任务。这是预期的行为。
验证镜像是否已推送到
build.spec.output.image字段中指定的 registry。在登录到 registry 后,您可以尝试拉取镜像:podman pull quay.io/<repo>/<image>
$ podman pull quay.io/<repo>/<image>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建
Build资源时使用的存储库名称和镜像名称。例如,您可以使用s2i-nodejs-example作为镜像名称。
1.2.1. 在网络限制环境中创建 Source-to-image 构建 复制链接链接已复制到粘贴板!
您可以通过镜像 Source-to-image 构建策略,在网络限制环境中创建 Source-to-image 构建。
先决条件
- 集群可以连接并与可用于创建 Source-to-image 构建的 git 源进行交互。
-
您有在本地 registry 中创建
source-to-image构建所需的 builder-to-image。如果您在本地 registry 中没有 builder-image,则镜像源镜像。
流程
运行以下命令镜像
source-to-image构建策略所需的镜像:oc image mirror --insecure -a <registry_authentication> registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:d041c1bbe503d152d0759598f79802e257816d674b342670ef61c6f9e6d401c5 <mirror_registry>/<repo>/source-to-image-source-to-image-rhel8
$ oc image mirror --insecure -a <registry_authentication> registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:d041c1bbe503d152d0759598f79802e257816d674b342670ef61c6f9e6d401c5 <mirror_registry>/<repo>/source-to-image-source-to-image-rhel8Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 执行"创建 source-to-image 构建"部分中所述的步骤。
1.3. 查看日志 复制链接链接已复制到粘贴板!
您可以查看构建运行的日志,以识别任何运行时错误并解决它们。
先决条件
-
已安装
ocCLI。 -
可选: 已安装
shpCLI。
流程
使用其中一个 CLI 查看构建的日志:
使用
ocCLIoc logs <buildrun_resource_name>
$ oc logs <buildrun_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
shpCLIshp buildrun logs <buildrun_resource_name>
$ shp buildrun logs <buildrun_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. 删除资源 复制链接链接已复制到粘贴板!
如果项目不需要,您可以删除 Build、BuildRun 或 BuildStrategy 资源。
先决条件
-
已安装
ocCLI。 -
可选: 已安装
shpCLI。
流程
使用其中一个 CLI 删除
Build资源:使用
ocCLIoc delete builds.shipwright.io <build_resource_name>
$ oc delete builds.shipwright.io <build_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
shpCLIshp build delete <build_resource_name>
$ shp build delete <build_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 删除
BuildRun资源:使用
ocCLIoc delete buildrun <buildrun_resource_name>
$ oc delete buildrun <buildrun_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
shpCLIshp buildrun delete <buildrun_resource_name>
$ shp buildrun delete <buildrun_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除
BuildStrategy资源:使用
ocCLIoc delete buildstrategies <buildstartegy_resource_name>
$ oc delete buildstrategies <buildstartegy_resource_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.