我正在使用 Tekton Pipelines 实现 CI/CD,背后的逻辑是,一旦test
获得批准,我应该从 docker 注册表中获取该图像并触发dev
ImageStream,以便它可以触发 DeploymentConfig。
问题是,当dev
使用test
图像并且我test
使用新功能进行更新(图像被部署并且 docker 注册表中的图像 SHA 更改)并且dev
无法找到“新测试更新之前”test
图像503 unreachable Route
导致dev
.
test
即使在图像更改后,如何制作(我的猜测)ImageStream 以防止无法访问?根本原因是否在import-image
cmd中?或者当 BuildConfig 推送图像时如何防止图像覆盖(是否有额外的 BuildConfig 参数)?
我的设置:
因为test
我运行 Tekton Pipeline,最后一个任务启动 BuildConfig,它将图像推送到 docker 注册表。
因为dev
我有一个任务的 Tekton Pipeline:
apiVersion: tekton.dev/v1beta1
kind: Task
name: get-dev-image
namespace: xxx
labels:
deploymentconfig: dc-prod
spec:
steps:
- image: 'image-registry.openshift-image-registry.svc:5000/openshift/cli:latest'
name: get-dev-image
resources: {}
script: |
DOCKER_REPO=xxx.com/image_name
TEST_IMAGE=$DOCKER_REPO:test
oc import-image $DOCKER_REPO:dev --from=$TEST_IMAGE --confirm=true
图像流:
spec:
lookupPolicy:
local: true
tags:
- name: dev
from:
kind: ImageStreamImage
name: >-
image_name@sha256:latest_test_SHA_code
importPolicy: {}
referencePolicy:
type: Source
DeploymentConfig 配置为由dev
标签触发。