使用构建
第 1 章 运行构建 复制链接链接已复制到粘贴板!
安装构建后,您可以创建 buildah
或 source-to-image
构建以供使用。您还可以删除构建不需要的自定义资源。
1.1. 创建 buildah 构建 复制链接链接已复制到粘贴板!
您可以创建 buildah
构建,并将创建的镜像推送到目标 registry。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift Operator 的构建。
-
您已创建了
ShipwrightBuild
资源。 -
已安装
oc
CLI。 -
可选: 已安装
shp
CLI。
流程
创建
Build
资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
oc
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shp
CLIshp 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
资源:示例: 使用
oc
CLIoc get builds.shipwright.io buildah-golang-build
$ oc get builds.shipwright.io buildah-golang-build
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shp
CLIshp build list
$ shp build list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
BuildRun
资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
oc
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.build.name
字段表示要运行的相应构建,该构建应该在同一个命名空间中可用。
示例: 使用
shp
CLIshp build run buildah-golang-build --follow
$ shp build run buildah-golang-build --follow
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:通过使用-
follow
标志,您可以在输出结果中查看构建日志。
运行以下命令之一检查
BuildRun
资源是否已创建:示例: 使用
oc
CLIoc get buildrun buildah-golang-buildrun
$ oc get buildrun buildah-golang-buildrun
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shp
CLIshp buildrun list
$ shp buildrun list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BuildRun
资源创建一个TaskRun
资源,然后创建 Pod 来执行构建策略步骤。
验证
所有容器完成其任务后,验证以下内容:
检查 pod 是否显示
STATUS
字段为Completed
:oc get pods -w
$ oc get pods -w
Copy 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 55s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
TaskRun
资源是否显示SUCCEEDED
字段为True
:oc get tr
$ oc get tr
Copy 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 8m51s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
BuildRun
资源是否将SUCCEEDED
字段显示为True
:oc get br
$ oc get br
Copy 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 11m
Copy 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.2. 创建 Source-to-image 构建 复制链接链接已复制到粘贴板!
您可以创建 Source-to-image
构建,并将创建的镜像推送到自定义 Quay 存储库。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift Operator 的构建。
-
您已创建了
ShipwrightBuild
资源。 -
已安装
oc
CLI。 -
可选: 已安装
shp
CLI。
流程
创建
Build
资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
oc
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shp
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 检查是否创建了
Build
资源:示例: 使用
oc
CLIoc get builds.shipwright.io s2i-nodejs-build
$ oc get builds.shipwright.io s2i-nodejs-build
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shp
CLIshp build list
$ shp build list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
BuildRun
资源,并使用其中一个 CLI 将它应用到 OpenShift Container Platform 集群:示例: 使用
oc
CLICopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
spec.build.name
字段表示要运行的相应构建,该构建应该在同一个命名空间中可用。
示例: 使用
shp
CLIshp build run s2i-nodejs-build --follow
$ shp build run s2i-nodejs-build --follow
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 可选:通过使用-
follow
标志,您可以在输出结果中查看构建日志。
运行以下命令之一检查
BuildRun
资源是否已创建:示例: 使用
oc
CLIoc get buildrun s2i-nodejs-buildrun
$ oc get buildrun s2i-nodejs-buildrun
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 示例: 使用
shp
CLIshp buildrun list
$ shp buildrun list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow BuildRun
资源创建一个TaskRun
资源,然后创建 Pod 来执行构建策略步骤。
验证
所有容器完成其任务后,验证以下内容:
检查 pod 是否显示
STATUS
字段为Completed
:oc get pods -w
$ oc get pods -w
Copy 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 2m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
TaskRun
资源是否显示SUCCEEDED
字段为True
:oc get tr
$ oc get tr
Copy 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 13s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查对应的
BuildRun
资源是否将SUCCEEDED
字段显示为True
:oc get br
$ oc get br
Copy 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 15s
Copy 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.3. 查看日志 复制链接链接已复制到粘贴板!
您可以查看构建运行的日志,以识别任何运行时错误并解决它们。
先决条件
-
已安装
oc
CLI。 -
可选: 已安装
shp
CLI。
流程
使用其中一个 CLI 查看构建的日志:
使用
oc
CLIoc logs <buildrun_resource_name>
$ oc logs <buildrun_resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
shp
CLIshp 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
资源。
先决条件
-
已安装
oc
CLI。 -
可选: 已安装
shp
CLI。
流程
使用其中一个 CLI 删除
Build
资源:使用
oc
CLIoc delete builds.shipwright.io <build_resource_name>
$ oc delete builds.shipwright.io <build_resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
shp
CLIshp build delete <build_resource_name>
$ shp build delete <build_resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用其中一个 CLI 删除
BuildRun
资源:使用
oc
CLIoc delete buildrun <buildrun_resource_name>
$ oc delete buildrun <buildrun_resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
shp
CLIshp buildrun delete <buildrun_resource_name>
$ shp buildrun delete <buildrun_resource_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来删除
BuildStrategy
资源:使用
oc
CLIoc 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.