charts/pipelines-library/templates/tasks/update-cbis.yaml (43 lines of code) (raw):
{{ if .Values.pipelines.deployableResources.tasks }}
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: update-cbis
spec:
description: >-
This task updates a Codebase ImageStream (CBIS) with a new image tag. It checks for the presence of tags in the specified CBIS and adds the new tag if it doesn't already exist.
The task utilizes kubectl commands and is customizable with parameters for CBIS
params:
- name: CBIS_NAME
type: string
description: "Codebase name with only letters and dashes"
- name: IMAGE_TAG
type: string
- name: BASE_IMAGE
description: The base image for the task.
type: string
default: {{ include "edp-tekton.registry" . }}/bitnami/kubectl:1.25.4
steps:
- name: update-cbis
image: $(params.BASE_IMAGE)
env:
- name: CBIS_NAME
value: "$(params.CBIS_NAME)"
- name: IMAGE_TAG
value: "$(params.IMAGE_TAG)"
script: |
#!/usr/bin/env bash
set -e
cbisCrTags=$(kubectl get cbis.v2.edp.epam.com ${CBIS_NAME} --output=jsonpath={.spec.tags})
dateFormat=$(date -u '+%Y-%m-%dT%H:%M:%SZ')
newcbisTag="{\"name\":\"${IMAGE_TAG}\",\"created\":\"${dateFormat}\"}"
if [ "${cbisCrTags}" = "" ] ; then
echo "[TEKTON][DEBUG] There're no tags in imageStream ${CBIS_NAME} ... the first one will be added."
kubectl patch cbis.v2.edp.epam.com ${CBIS_NAME} --type=merge -p "{\"spec\":{\"tags\":[${newcbisTag}]}}"
fi
cbisTagsList=$(kubectl get cbis.v2.edp.epam.com ${CBIS_NAME} --output=jsonpath={.spec.tags[*].name})
if [[ ! ${cbisTagsList} == *"${IMAGE_TAG}"* ]]; then
echo "[TEKTON][DEBUG] ImageStream ${CBIS_NAME} doesn't contain ${IMAGE_TAG} tag ... it will be added."
kubectl patch cbis.v2.edp.epam.com ${CBIS_NAME} --type json -p="[{\"op\": \"add\", \"path\": \"/spec/tags/-\", \"value\": ${newcbisTag} }]"
fi
{{ end }}