Skip to content

Commit 0904c90

Browse files
committed
Fix tagging
1 parent 8954aab commit 0904c90

File tree

1 file changed

+88
-6
lines changed

1 file changed

+88
-6
lines changed

.github/workflows/build_containers.yaml

Lines changed: 88 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -248,28 +248,79 @@ jobs:
248248
cat /tmp/tags | xargs -i bash -c 'printf "%s" "-t {} " >> /tmp/tagargs'
249249
TAG_ARGS="$(cat /tmp/tagargs)"
250250
TAGS="$(cat /tmp/tags)"
251+
252+
# Add version tags for RELEASE branches (e.g., RELEASE_3_21 -> 3.21)
253+
for tag in $TAGS; do
254+
if [[ "$tag" == *"RELEASE_"* ]]; then
255+
# Extract the version number (e.g., RELEASE_3_21 -> 3.21)
256+
VERSION=$(echo "$tag" | sed -E 's/.*RELEASE_([0-9]+)_([0-9]+).*/\1.\2/')
257+
if [ ! -z "$VERSION" ]; then
258+
# Add the numeric version tag (e.g., 3.21)
259+
REGISTRY=$(echo "$tag" | cut -d':' -f1)
260+
TAG_ARGS="$TAG_ARGS -t ${REGISTRY}:${VERSION}"
261+
fi
262+
fi
263+
done
251264
252265
R_VER=$(docker pull ${{ matrix.base.image }}:${{ matrix.base.amdtag }} 2>&1 > /dev/null && \
253266
docker inspect ${{ matrix.base.image }}:${{ matrix.base.amdtag }} | \
254267
jq -r '.[].Config.Env[]|select(match("^R_VERSION"))|.[index("=")+1:]')
255268
if [ ! -z "$R_VER" ]; then
256269
for tag in $TAGS; do
257270
TAG_ARGS="$TAG_ARGS -t ${tag}-R-${R_VER} -t ${tag}-r-${R_VER}"
271+
272+
# For RELEASE branches, also add version-R tags
273+
if [[ "$tag" == *"RELEASE_"* ]]; then
274+
VERSION=$(echo "$tag" | sed -E 's/.*RELEASE_([0-9]+)_([0-9]+).*/\1.\2/')
275+
if [ ! -z "$VERSION" ]; then
276+
REGISTRY=$(echo "$tag" | cut -d':' -f1)
277+
TAG_ARGS="$TAG_ARGS -t ${REGISTRY}:${VERSION}-R-${R_VER} -t ${REGISTRY}:${VERSION}-r-${R_VER}"
278+
fi
279+
fi
258280
done
259281
fi
260282

261283
# Add alternative tags without _docker in name
262284
if [[ "${{ matrix.base.outname }}" == *"_docker"* ]]; then
263-
ALT_TAG=$(echo $TAG_ARGS | sed 's/_docker//g')
264-
TAG_ARGS="$TAG_ARGS $ALT_TAG"
285+
for tag in $TAGS; do
286+
# Extract registry and branch/version from tag
287+
REGISTRY=$(echo "$tag" | cut -d':' -f1)
288+
VERSION=$(echo "$tag" | cut -d':' -f2)
289+
290+
# Create new registry without _docker suffix
291+
NEW_REGISTRY=$(echo "$REGISTRY" | sed 's/_docker//g')
292+
293+
# Add tag without _docker in name
294+
TAG_ARGS="$TAG_ARGS -t ${NEW_REGISTRY}:${VERSION}"
295+
296+
# If it's a release branch, also add the numeric version tag
297+
if [[ "$VERSION" == RELEASE_* ]]; then
298+
NUM_VERSION=$(echo "$VERSION" | sed -E 's/RELEASE_([0-9]+)_([0-9]+).*/\1.\2/')
299+
if [ ! -z "$NUM_VERSION" ]; then
300+
TAG_ARGS="$TAG_ARGS -t ${NEW_REGISTRY}:${NUM_VERSION}"
301+
fi
302+
fi
303+
304+
# If R_VER exists, add R version tags for the non-_docker version
305+
if [ ! -z "$R_VER" ]; then
306+
TAG_ARGS="$TAG_ARGS -t ${NEW_REGISTRY}:${VERSION}-R-${R_VER} -t ${NEW_REGISTRY}:${VERSION}-r-${R_VER}"
307+
308+
# If it's a release branch, also add R version tags for numeric version
309+
if [[ "$VERSION" == RELEASE_* ]]; then
310+
NUM_VERSION=$(echo "$VERSION" | sed -E 's/RELEASE_([0-9]+)_([0-9]+).*/\1.\2/')
311+
if [ ! -z "$NUM_VERSION" ]; then
312+
TAG_ARGS="$TAG_ARGS -t ${NEW_REGISTRY}:${NUM_VERSION}-R-${R_VER} -t ${NEW_REGISTRY}:${NUM_VERSION}-r-${R_VER}"
313+
fi
314+
fi
315+
fi
316+
done
265317
fi
266318

267-
CONTAINERNAME=$(echo '${{ steps.meta1.outputs.tags }}' | awk -F':' '{print $1}')
268-
269319
# Create manifest list
270320
DIGESTS=""
321+
BASE_REGISTRY=$(echo '${{ steps.meta1.outputs.tags }}' | awk -F':' '{print $1}')
271322
for eachdir in $(ls /tmp/digests); do
272-
DIGESTS_ARCH=$(cd /tmp/digests/$eachdir && find . -type f -exec echo "$CONTAINERNAME@sha256{}" \; | sed 's/\.\//:/')
323+
DIGESTS_ARCH=$(cd /tmp/digests/$eachdir && find . -type f -exec echo "$BASE_REGISTRY@sha256{}" \; | sed 's/\.\//:/')
273324
DIGESTS="$DIGESTS $DIGESTS_ARCH"
274325
done
275326
echo "$TAG_ARGS"
@@ -278,4 +329,35 @@ jobs:
278329

279330
- name: Inspect images
280331
run: |
281-
cat /tmp/tags | xargs -i bash -c 'docker buildx imagetools inspect {}'
332+
# Get registry prefixes
333+
REGISTRY_PREFIXES=$(cat /tmp/tags | awk -F':' '{print $1}' | sort -u)
334+
BRANCH=$(cat /tmp/tags | head -1 | awk -F':' '{print $2}')
335+
336+
# Inspect all created tags
337+
for prefix in $REGISTRY_PREFIXES; do
338+
# Base tag
339+
echo "Inspecting: $prefix:$BRANCH"
340+
docker buildx imagetools inspect "$prefix:$BRANCH"
341+
342+
# Without _docker suffix if applicable
343+
if [[ "${{ matrix.base.outname }}" == *"_docker"* ]]; then
344+
NO_DOCKER_PREFIX=$(echo "$prefix" | sed 's/_docker//g')
345+
echo "Inspecting: $NO_DOCKER_PREFIX:$BRANCH"
346+
docker buildx imagetools inspect "$NO_DOCKER_PREFIX:$BRANCH"
347+
fi
348+
349+
# Version tag for release branches
350+
if [[ "$BRANCH" == RELEASE_* ]]; then
351+
VERSION=$(echo "$BRANCH" | sed -E 's/RELEASE_([0-9]+)_([0-9]+).*/\1.\2/')
352+
if [ ! -z "$VERSION" ]; then
353+
echo "Inspecting: $prefix:$VERSION"
354+
docker buildx imagetools inspect "$prefix:$VERSION"
355+
356+
# Without _docker suffix if applicable
357+
if [[ "${{ matrix.base.outname }}" == *"_docker"* ]]; then
358+
echo "Inspecting: $NO_DOCKER_PREFIX:$VERSION"
359+
docker buildx imagetools inspect "$NO_DOCKER_PREFIX:$VERSION"
360+
fi
361+
fi
362+
fi
363+
done

0 commit comments

Comments
 (0)