diff --git a/pipelines/cluster-retag-image.yaml b/pipelines/cluster-retag-image.yaml new file mode 100644 index 00000000..6d02532d --- /dev/null +++ b/pipelines/cluster-retag-image.yaml @@ -0,0 +1,27 @@ +apiVersion: crd.chenshaowen.com/v1 +kind: Pipeline +metadata: + name: cluster-retag-image + namespace: ops-system +spec: + desc: 转存、retag 容器镜像 + variables: + nodeName: + required: true + typeRef: + value: "cluster" + required: true + nameRef: + required: true + source: + required: true + desc: 源镜像名字 + destination: + required: true + desc: 目标镜像名字 + tasks: + - name: 白名单检测 + ref: check-whitelist + - name: retag image + ref: retag-image + diff --git a/tasks/retag-image.yaml b/tasks/retag-image.yaml new file mode 100644 index 00000000..a33a9db6 --- /dev/null +++ b/tasks/retag-image.yaml @@ -0,0 +1,33 @@ +apiVersion: crd.chenshaowen.com/v1 +kind: Task +metadata: + name: retag-image + namespace: ops-system +spec: + desc: retag image + typeRef: cluster + variables: + source: + display: source image + required: true + destination: + display: destination image + required: true + steps: + - name: retag image + content: | + # alias nerdctl=docker + docker pull "${source}" > /dev/null + docker tag "${source}" "${destination}" > /dev/null + docker push "${destination}" > /dev/null + + # check existence + docker pull "${destination}" + if [ $? -ne 0 ]; then + echo "Failed to retag ${source} to ${destination}" + exit 0 + else + echo "Successfully retag ${source} to ${destination}" + fi + docker rmi "${source}" > /dev/null + docker rmi "${destination}" > /dev/null