Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions config/openshift/base/operator.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -90,19 +90,19 @@ spec:
- name: IMAGE_HUB_TEKTON_HUB_DB
value: registry.redhat.io/rhel9/postgresql-13@sha256:36647bd6d50d2e0e9c99ecf190bd515577c7ce9476e49d927c4d4065011e3441
- name: IMAGE_ADDONS_PARAM_BUILDER_IMAGE
value: registry.redhat.io/rhel9/buildah@sha256:a6e04c061b8d261dba85d01dcb64d3f7dba8c0b9765e03f05ec79850a248d75a
value: registry.redhat.io/rhel9/buildah@sha256:c54ea681142034817a77275ec770167cb17e64020f8c2dbb57c054c39b6c514a
- name: IMAGE_ADDONS_PARAM_KN_IMAGE
value: registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8@sha256:d21cc7e094aa46ba7f6ea717a3d7927da489024a46a6c1224c0b3c5834dcb7a6
- name: IMAGE_ADDONS_MVN_SETTINGS
value: registry.redhat.io/ubi9/ubi-minimal@sha256:14f14e03d68f7fd5f2b18a13478b6b127c341b346c86b6e0b886ed2b7573b8e0
value: registry.redhat.io/ubi9/ubi-minimal@sha256:463cae32c6f6f5594b11a5c22de275016bd8545ce58a6373388e8b24f13fc15c
- name: IMAGE_ADDONS_SKOPEO_COPY
value: registry.redhat.io/rhel9/skopeo@sha256:993f799d58c48151ecae7a84e63860f6c0039e8e18efed5ad67e7752f4b7e408
value: registry.redhat.io/rhel9/skopeo@sha256:fc58b8a734a34f1fd1b0b31e7e137a8200c72e233fbe2a67a29b7a665b683ce9
- name: IMAGE_ADDONS_GENERATE
value: registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:3696cf724ce7865626ae408d82fd87727c741e4d3eb3475c271ec6d56f0882a4
- name: IMAGE_ADDONS_GEN_ENV_FILE
value: registry.redhat.io/source-to-image/source-to-image-rhel8@sha256:3696cf724ce7865626ae408d82fd87727c741e4d3eb3475c271ec6d56f0882a4
- name: IMAGE_ADDONS_PARAM_MAVEN_IMAGE
value: registry.redhat.io/ubi9/openjdk-17@sha256:cdbd64ba1b7826d09bc180fa19aa6fbc09ddb5bff5e02b7e1351353bbabebb78
value: registry.redhat.io/ubi9/openjdk-17@sha256:052c0ab499cfbb24b20339394778dfe6402a66b42398c8e59c87697b9b3f0a42
- name: IMAGE_ADDONS_OC
value: image-registry.openshift-image-registry.svc:5000/openshift/cli:latest
- name: openshift-pipelines-operator-cluster-operations # tektoninstallerset reconciler
Expand Down
125 changes: 47 additions & 78 deletions hack/openshift/update-image-sha.sh
Original file line number Diff line number Diff line change
@@ -1,103 +1,72 @@
#!/usr/bin/env bash
set -e -u -o pipefail

declare -r SCRIPT_NAME=$(basename "$0")
declare -r SCRIPT_DIR=$(cd $(dirname "$0") && pwd)
declare -r USERNAME=${REGISTRY_USER}
declare -r PASSWORD=${REGISTRY_PASSWORD}

log() {
local level=$1; shift
echo -e "$level: $@"
}


err() {
log "ERROR" "$@" >&2
}

info() {
log "INFO" "$@"
}

die() {
local code=$1; shift
local msg="$@"; shift
err $msg
exit $code
}

usage() {
local msg="$1"
cat <<-EOF
Error: $msg

USAGE:
REGISTRY_USER=<registry user name> REGISTRY_PASSWORD=<registry password> $SCRIPT_NAME

Example:
REGISTRY_USER=johnsmith REGISTRY_PASSWORD=pass123 $SCRIPT_NAME
EOF
exit 1
}

#declare -r CATALOG_VERSION="release-v0.7"

# Images to update
declare -A IMAGES=(
["buildah"]="registry.redhat.io/rhel9/buildah"
["kn"]="registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel8"
["postgresql"]="registry.redhat.io/rhel9/postgresql-13"
["kn"]="registry.redhat.io/openshift-serverless-1/kn-client-kn-rhel9"
["postgresql"]="registry.redhat.io/rhel9/postgresql-15"
["skopeo-copy"]="registry.redhat.io/rhel9/skopeo"
["s2i"]="registry.redhat.io/source-to-image/source-to-image-rhel8"
["s2i"]="registry.redhat.io/source-to-image/source-to-image-rhel9"
["ubi-minimal"]="registry.redhat.io/ubi9/ubi-minimal"
["java"]="registry.redhat.io/ubi9/openjdk-17"
)

registry_login() {
podman login --username=${USERNAME} --password=${PASSWORD} registry.redhat.io
}
# Find latest version/tag for an image
find_latest_version() {
local image=$1
# Try to get version from Labels first
local version=$(skopeo inspect docker://${image} 2>/dev/null | jq -r '.Labels.version // empty')

find_latest_versions() {
local image_registry=${1:-""}
local latest_version=""
if ! skopeo inspect docker://${image_registry} 2>/dev/null | jq '.Labels.version' | tr -d '"'
then
podman search --list-tags ${image_registry} | grep -v NAME | tr -s ' ' | cut -d ' ' -f 2 | sort -r | grep -v '\-[a-z0-9\.]*$' | head -n 1
# If no version label, get latest tag
if [[ -z "$version" ]]; then
version=$(skopeo list-tags docker://${image} | jq -r '.Tags[]' | sort -r | grep -v '\-[a-z0-9\.]*$' | head -n 1)
fi
}

find_sha_from_tag() {
local image_url=${1:-""}
podman run --rm docker.io/mplatform/manifest-tool:v2.0.0 --username=${USERNAME} --password=${PASSWORD} inspect $image_url --raw | jq '.digest' | tr -d '"'
echo "$version"
}

update_image_sha() {
local image_prefix=${1:-""}
shift
local image_sha=${1:-""}
shift
echo replacemnet var = ${image_prefix}
sed -i -E 's%('${image_prefix}').*%\1@'${image_sha}'%' config/openshift/base/operator.yaml
sed -i -E 's%('${image_prefix}').*%\1@'${image_sha}'%' operatorhub/openshift/config.yaml
sed -i -E 's%('${image_prefix}').*%\1@'${image_sha}'%' operatorhub/openshift/release-artifacts/bundle/manifests/*.yaml
find cmd/openshift/operator/kodata/tekton-addon/addons/ -type f -name "*.yaml" -exec sed -i -E 's%('${image_prefix}').*%\1@'${image_sha}'%' {} +
# Get manifest list digest for an image:tag (multi-arch)
get_manifest_list_digest() {
local image_url=$1
skopeo inspect --no-tags docker://${image_url} | jq -r '.Digest'
}

# Update image SHA in YAML files
update_yaml_files() {
local image_prefix=$1
local image_sha=$2

echo "Updating: ${image_prefix} -> ${image_sha}"

# Update all YAML files
sed -i -E "s%(${image_prefix}).*%\1@${image_sha}%" config/openshift/base/operator.yaml
sed -i -E "s%(${image_prefix}).*%\1@${image_sha}%" operatorhub/openshift/config.yaml
sed -i -E "s%(${image_prefix}).*%\1@${image_sha}%" operatorhub/openshift/release-artifacts/bundle/manifests/*.yaml
find cmd/openshift/operator/kodata/tekton-addon/addons/ -type f -name "*.yaml" -exec sed -i -E "s%(${image_prefix}).*%\1@${image_sha}%" {} +
}

# Main
main() {
registry_login
for image in ${!IMAGES[@]}; do
latest_version=$(find_latest_versions ${IMAGES[$image]})
echo latest_version=$latest_version
image_url="${IMAGES[$image]}":"${latest_version}"
echo $image_url
image_sha=$(find_sha_from_tag "${image_url}")
echo image_sha=${image_sha}
update_image_sha "${IMAGES[$image]}" $image_sha
echo "Updating Red Hat images to latest SHAs..."
echo

for image_name in "${!IMAGES[@]}"; do
image_registry="${IMAGES[$image_name]}"

echo "Processing: $image_name"
latest_version=$(find_latest_version "$image_registry")
echo " Latest version: $latest_version"

image_url="${image_registry}:${latest_version}"
image_sha=$(get_manifest_list_digest "$image_url")
echo " SHA: $image_sha"

update_yaml_files "$image_registry" "$image_sha"
echo
done

return $?
echo "✓ All images updated successfully"
}

main "$@"
10 changes: 5 additions & 5 deletions operatorhub/openshift/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -145,15 +145,15 @@ image-substitutions:
containerName: openshift-pipelines-operator-lifecycle
envKeys:
- IMAGE_ADDONS_OPC
- image: registry.redhat.io/rhel9/skopeo@sha256:993f799d58c48151ecae7a84e63860f6c0039e8e18efed5ad67e7752f4b7e408
- image: registry.redhat.io/rhel9/skopeo@sha256:fc58b8a734a34f1fd1b0b31e7e137a8200c72e233fbe2a67a29b7a665b683ce9
replaceLocations:
envTargets:
- deploymentName: openshift-pipelines-operator
containerName: openshift-pipelines-operator-lifecycle
envKeys:
- IMAGE_ADDONS_SKOPEO_COPY
- IMAGE_ADDONS_SKOPEO_RESULTS
- image: registry.redhat.io/rhel9/buildah@sha256:a6e04c061b8d261dba85d01dcb64d3f7dba8c0b9765e03f05ec79850a248d75a
- image: registry.redhat.io/rhel9/buildah@sha256:c54ea681142034817a77275ec770167cb17e64020f8c2dbb57c054c39b6c514a
replaceLocations:
envTargets:
- deploymentName: openshift-pipelines-operator
Expand All @@ -162,7 +162,7 @@ image-substitutions:
- IMAGE_ADDONS_PARAM_BUILDER_IMAGE
- IMAGE_ADDONS_BUILD
- IMAGE_ADDONS_S2I_BUILD
- image: registry.redhat.io/source-to-image/source-to-image-rhel9@sha256:70293cb8a80aa548933ff5f502bac89945a5cd08801c4ca3aac08a10dd01f62f
- image: registry.redhat.io/source-to-image/source-to-image-rhel9@sha256:718e59d9aacacbaa16be3ae247bdb8582dc4fd9cbe0c5314dfdfc8f22e4f3578
replaceLocations:
envTargets:
- deploymentName: openshift-pipelines-operator
Expand All @@ -171,7 +171,7 @@ image-substitutions:
- IMAGE_ADDONS_GENERATE
- IMAGE_ADDONS_GEN_ENV_FILE
- IMAGE_ADDONS_S2I_GENERATE
- image: registry.redhat.io/ubi9/ubi-minimal@sha256:14f14e03d68f7fd5f2b18a13478b6b127c341b346c86b6e0b886ed2b7573b8e0
- image: registry.redhat.io/ubi9/ubi-minimal@sha256:463cae32c6f6f5594b11a5c22de275016bd8545ce58a6373388e8b24f13fc15c
replaceLocations:
envTargets:
- deploymentName: openshift-pipelines-operator
Expand Down Expand Up @@ -284,7 +284,7 @@ image-substitutions:
containerName: openshift-pipelines-operator-lifecycle
envKeys:
- IMAGE_RESULTS_RETENTION_POLICY_AGENT
- image: registry.redhat.io/ubi9/openjdk-17@sha256:cdbd64ba1b7826d09bc180fa19aa6fbc09ddb5bff5e02b7e1351353bbabebb78
- image: registry.redhat.io/ubi9/openjdk-17@sha256:052c0ab499cfbb24b20339394778dfe6402a66b42398c8e59c87697b9b3f0a42
replaceLocations:
envTargets:
- deploymentName: openshift-pipelines-operator
Expand Down
Loading