From 6929c51b6a2573f0ea53865e72927e04e86e5b39 Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Tue, 17 Feb 2026 14:08:52 -0800 Subject: [PATCH 1/3] sync: convert tabs to space --- sync-awsecr.sh | 84 +++++++++++++++++++++++++------------------------- 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/sync-awsecr.sh b/sync-awsecr.sh index 599a33a12..2a895d7ff 100755 --- a/sync-awsecr.sh +++ b/sync-awsecr.sh @@ -6,8 +6,8 @@ registry="public.ecr.aws/z9d2n7e1" declare -A aliases aliases=( - [mainline]='1 1.29 latest' - [stable]='1.28' + [mainline]='1 1.29 latest' + [stable]='1.28' ) architectures=( amd64 arm64v8 ) @@ -29,31 +29,31 @@ fileCommit() { # get the most recent commit which modified "$1/Dockerfile" or any file COPY'd from "$1/Dockerfile" dirCommit() { - local dir="$1"; shift - ( - cd "$dir" - fileCommit \ - Dockerfile \ - $(git show HEAD:./Dockerfile | awk ' - toupper($1) == "COPY" { - for (i = 2; i < NF; i++) { - print $i - } - } - ') - ) + local dir="$1"; shift + ( + cd "$dir" + fileCommit \ + Dockerfile \ + $(git show HEAD:./Dockerfile | awk ' + toupper($1) == "COPY" { + for (i = 2; i < NF; i++) { + print $i + } + } + ') + ) } # prints "$2$1$3$1...$N" join() { - local sep="$1"; shift - local out; printf -v out "${sep//%/%%}%s" "$@" - echo "${out#$sep}" + local sep="$1"; shift + local out; printf -v out "${sep//%/%%}%s" "$@" + echo "${out#$sep}" } for version in "${versions[@]}"; do - commit="$(dirCommit "$version/$base")" - fullVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk '$1 == "ENV" && $2 == "NGINX_VERSION" { print $3; exit }')" + commit="$(dirCommit "$version/$base")" + fullVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk '$1 == "ENV" && $2 == "NGINX_VERSION" { print $3; exit }')" pulllist+=( "$image:$fullVersion" ) for variant in perl alpine alpine-perl alpine-slim; do pulllist+=( "$image:$fullVersion-$variant" ) @@ -61,52 +61,52 @@ for version in "${versions[@]}"; do done for version in "${versions[@]}"; do - commit="$(dirCommit "$version/$base")" + commit="$(dirCommit "$version/$base")" - fullVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk '$1 == "ENV" && $2 == "NGINX_VERSION" { print $3; exit }')" + fullVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk '$1 == "ENV" && $2 == "NGINX_VERSION" { print $3; exit }')" - versionAliases=( $fullVersion ) - if [ "$version" != "$fullVersion" ]; then - versionAliases+=( $version ) - fi - versionAliases+=( ${aliases[$version]:-} ) + versionAliases=( $fullVersion ) + if [ "$version" != "$fullVersion" ]; then + versionAliases+=( $version ) + fi + versionAliases+=( ${aliases[$version]:-} ) - debianVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk -F"[-:]" '$1 == "FROM debian" { print $2; exit }')" - debianAliases=( ${versionAliases[@]/%/-$debianVersion} ) - debianAliases=( "${debianAliases[@]//latest-/}" ) + debianVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk -F"[-:]" '$1 == "FROM debian" { print $2; exit }')" + debianAliases=( ${versionAliases[@]/%/-$debianVersion} ) + debianAliases=( "${debianAliases[@]//latest-/}" ) for tag in ${versionAliases[@]:1} ${debianAliases[@]:1}; do taglist["$image:$tag"]="$image:$fullVersion" done - for variant in debian-perl; do - variantAliases=( "${versionAliases[@]/%/-perl}" ) + for variant in debian-perl; do + variantAliases=( "${versionAliases[@]/%/-perl}" ) variantAliases+=( "${versionAliases[@]/%/-${variant/debian/$debianVersion}}" ) - variantAliases=( "${variantAliases[@]//latest-/}" ) + variantAliases=( "${variantAliases[@]//latest-/}" ) for tag in ${variantAliases[@]}; do - if [ "$tag" != "${fullVersion}-perl" ]; then + if [ "$tag" != "${fullVersion}-perl" ]; then taglist["$image:$tag"]="$image:$fullVersion-perl" fi done - done + done commit="$(dirCommit "$version/alpine-slim")" alpineVersion="$(git show "$commit":"$version/alpine-slim/Dockerfile" | awk -F: '$1 == "FROM alpine" { print $2; exit }')" - for variant in alpine alpine-perl alpine-slim; do - commit="$(dirCommit "$version/$variant")" + for variant in alpine alpine-perl alpine-slim; do + commit="$(dirCommit "$version/$variant")" - variantAliases=( "${versionAliases[@]/%/-$variant}" ) - variantAliases+=( "${versionAliases[@]/%/-${variant/alpine/alpine$alpineVersion}}" ) - variantAliases=( "${variantAliases[@]//latest-/}" ) + variantAliases=( "${versionAliases[@]/%/-$variant}" ) + variantAliases+=( "${versionAliases[@]/%/-${variant/alpine/alpine$alpineVersion}}" ) + variantAliases=( "${variantAliases[@]//latest-/}" ) for tag in ${variantAliases[@]}; do - if [ "$tag" != "${fullVersion}-$variant" ]; then + if [ "$tag" != "${fullVersion}-$variant" ]; then taglist["$image:$tag"]="$image:${fullVersion}-$variant" fi done - done + done done From 87bdc66ed55c03e438ebe7762d9b261f8c62fb0e Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Tue, 17 Feb 2026 14:23:57 -0800 Subject: [PATCH 2/3] sync: added otel image to sync --- sync-awsecr.sh | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/sync-awsecr.sh b/sync-awsecr.sh index 2a895d7ff..6f6ab086d 100755 --- a/sync-awsecr.sh +++ b/sync-awsecr.sh @@ -55,7 +55,7 @@ for version in "${versions[@]}"; do commit="$(dirCommit "$version/$base")" fullVersion="$(git show "$commit":"$version/$base/Dockerfile" | awk '$1 == "ENV" && $2 == "NGINX_VERSION" { print $3; exit }')" pulllist+=( "$image:$fullVersion" ) - for variant in perl alpine alpine-perl alpine-slim; do + for variant in otel perl alpine alpine-otel alpine-perl alpine-slim; do pulllist+=( "$image:$fullVersion-$variant" ) done done @@ -91,10 +91,22 @@ for version in "${versions[@]}"; do done done + for variant in debian-otel; do + variantAliases=( "${versionAliases[@]/%/-otel}" ) + variantAliases+=( "${versionAliases[@]/%/-${variant/debian/$debianVersion}}" ) + variantAliases=( "${variantAliases[@]//latest-/}" ) + + for tag in ${variantAliases[@]}; do + if [ "$tag" != "${fullVersion}-otel" ]; then + taglist["$image:$tag"]="$image:$fullVersion-otel" + fi + done + done + commit="$(dirCommit "$version/alpine-slim")" alpineVersion="$(git show "$commit":"$version/alpine-slim/Dockerfile" | awk -F: '$1 == "FROM alpine" { print $2; exit }')" - for variant in alpine alpine-perl alpine-slim; do + for variant in alpine alpine-otel alpine-perl alpine-slim; do commit="$(dirCommit "$version/$variant")" variantAliases=( "${versionAliases[@]/%/-$variant}" ) From 51353908fa0e6a7cd7b995600ff86458e47b3527 Mon Sep 17 00:00:00 2001 From: Konstantin Pavlov Date: Tue, 17 Feb 2026 14:40:28 -0800 Subject: [PATCH 3/3] sync: use docker buildx instead of docker manifest `docker manifest` cli invocation does not support oci indexes with multiple manifests; move to buildx to create and push the manifests instead. --- sync-awsecr.sh | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/sync-awsecr.sh b/sync-awsecr.sh index 6f6ab086d..39dcbcee5 100755 --- a/sync-awsecr.sh +++ b/sync-awsecr.sh @@ -167,17 +167,11 @@ done done echo -echo "# manifesting stuff" +echo "# manifesting and pushing stuff" for tag in ${pulllist[@]} ${!taglist[@]}; do - string="docker manifest create --amend $registry/$tag" + string="docker buildx imagetools create --progress=plain -t --amend $registry/$tag" for arch in ${architectures[@]}; do string+=" $registry/$tag-$arch" done echo $string done - -echo -echo "# pushing manifests" -for tag in ${pulllist[@]} ${!taglist[@]}; do - echo "docker manifest push --purge $registry/$tag" -done