1.2. 创建 Source-to-image 构建
您可以创建一个 source-to-image 构建,并将创建的镜像推送到自定义 Quay 存储库。
先决条件
- 您已在 OpenShift Container Platform 集群中安装了 Red Hat OpenShift Operator 的 Builds。
-
您已创建了
ShipwrightBuild资源。 -
已安装
ocCLI。 -
可选: 已安装
shpCLI。
流程
使用其中一个 CLI 创建
Build资源并将其应用到 OpenShift Container Platform 集群:示例: 使用
ocCLI$ oc apply -f - <<EOF apiVersion: shipwright.io/v1beta1 kind: Build metadata: name: s2i-nodejs-build spec: source:1 git: url: https://github.com/shipwright-io/sample-nodejs contextDir: source-build/ strategy:2 name: source-to-image kind: ClusterBuildStrategy paramValues:3 - name: builder-image value: quay.io/centos7/nodejs-12-centos7 output: image: quay.io/<repo>/s2i-nodejs-example4 pushSecret: registry-credential5 EOF示例:使用
shpCLI$ shp build create s2i-nodejs-build \ --source-url="https://github.com/shipwright-io/sample-nodejs" --source-context-dir="source-build" \1 --strategy-name="source-to-image" \2 --builder-image="quay.io/centos7/nodejs-12-centos7" \3 --output-image="quay.io/<repo>/s2i-nodejs-example" \4 --output-credentials-secret="registry-credential"5 使用其中一个 CLI 检查
Build资源是否已创建:示例: 使用
ocCLI$ oc get builds.shipwright.io s2i-nodejs-build示例:使用
shpCLI$ shp build list使用其中一个 CLI 创建
BuildRun资源并将其应用到 OpenShift Container Platform 集群:示例: 使用
ocCLI$ oc apply -f - <<EOF apiVersion: shipwright.io/v1beta1 kind: BuildRun metadata: name: s2i-nodejs-buildrun spec: build: name: s2i-nodejs-build1 EOF- 1
spec.build.name字段表示要运行的相应构建,该构建预期在同一命名空间中可用。
示例:使用
shpCLI$ shp build run s2i-nodejs-build --follow1 - 1
- 可选: 通过使用
--follow标志,您可以在输出结果中查看构建日志。
使用其中一个 CLI 检查
BuildRun资源是否已创建:示例: 使用
ocCLI$ oc get buildrun s2i-nodejs-buildrun示例:使用
shpCLI$ shp buildrun listBuildRun资源会创建一个TaskRun资源,然后创建 pod 来执行构建策略步骤。
验证
所有容器完成其任务后,验证以下内容:
检查 pod 是否将
STATUS字段显示为Completed:$ oc get pods -w输出示例
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检查对应的
TaskRun资源是否将SUCCEEDED字段显示为True:$ oc get tr输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun-phxxm True Succeeded 2m39s 13s检查对应的
BuildRun资源是否将SUCCEEDED字段显示为True:$ oc get br输出示例
NAME SUCCEEDED REASON STARTTIME COMPLETIONTIME s2i-nodejs-buildrun True Succeeded 2m41s 15s在验证过程中,如果构建运行失败,您可以检查
BuildRun资源中的status.failureDetails字段,以识别 pod 或容器中发生故障的确切点。注意pod 可能会切换到
NotReady状态,因为其中一个容器已经完成其任务。这是预期的行为。
验证镜像是否已推送到
build.spec.output.image字段中指定的 registry。您可以在登录到 registry 后运行以下命令来尝试拉取镜像:$ podman pull quay.io/<repo>/<image>1 - 1
- 创建
Build资源时使用的存储库名称和镜像名称。例如,您可以使用s2i-nodejs-example作为镜像名称。