@@ -240,16 +240,54 @@ jobs:
240240 type=ref,event=branch
241241 type=ref,event=tag
242242 type=raw,value=${{ github.ref_name }}-${{ github.sha }}
243- type=semver,pattern={{version}}
244- type=semver,pattern={{major}}.{{minor}}.{{patch}}
245- type=semver,pattern={{major}}.{{minor}}
246- type=semver,pattern={{major}}
243+
244+ - name : Generate additional version tags (server)
245+ id : version-tags-server
246+ if : startsWith(github.ref, 'refs/tags/')
247+ run : |
248+ # Extract version from tag (remove 'v' prefix if present)
249+ VERSION=${GITHUB_REF#refs/tags/}
250+ VERSION=${VERSION#v}
251+
252+ # Split version into parts
253+ IFS='.' read -r -a parts <<< "$VERSION"
254+
255+ # Generate hierarchical tags based on number of parts
256+ ADDITIONAL_TAGS=""
257+ if [ ${#parts[@]} -ge 1 ]; then
258+ ADDITIONAL_TAGS="${{ env.SERVER_IMAGE }}:v${parts[0]}"
259+ fi
260+ if [ ${#parts[@]} -ge 2 ]; then
261+ ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.SERVER_IMAGE }}:v${parts[0]}.${parts[1]}"
262+ fi
263+ if [ ${#parts[@]} -ge 3 ]; then
264+ ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.SERVER_IMAGE }}:v${parts[0]}.${parts[1]}.${parts[2]}"
265+ fi
266+ if [ ${#parts[@]} -ge 4 ]; then
267+ ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.SERVER_IMAGE }}:v${parts[0]}.${parts[1]}.${parts[2]}.${parts[3]}"
268+ fi
269+
270+ echo "additional-tags=$ADDITIONAL_TAGS" >> $GITHUB_OUTPUT
271+ echo "Generated additional tags: $ADDITIONAL_TAGS"
247272
248273 - name : Create manifest list and push (server)
249274 working-directory : ${{ runner.temp }}/digests
250275 run : |
276+ # Create manifest for base tags from metadata
251277 docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
252278 $(printf '${{ env.SERVER_IMAGE }}@sha256:%s ' *)
279+
280+ # Create manifest for additional version tags if they exist
281+ if [ -n "${{ steps.version-tags-server.outputs.additional-tags }}" ]; then
282+ IFS=',' read -r -a additional_tags <<< "${{ steps.version-tags-server.outputs.additional-tags }}"
283+ for tag in "${additional_tags[@]}"; do
284+ if [ -n "$tag" ]; then
285+ echo "Creating manifest for additional tag: $tag"
286+ docker buildx imagetools create -t "$tag" \
287+ $(printf '${{ env.SERVER_IMAGE }}@sha256:%s ' *)
288+ fi
289+ done
290+ fi
253291
254292 - name : Inspect image (server)
255293 run : |
@@ -288,16 +326,54 @@ jobs:
288326 type=ref,event=branch
289327 type=ref,event=tag
290328 type=raw,value=${{ github.ref_name }}-${{ github.sha }}
291- type=semver,pattern={{version}}
292- type=semver,pattern={{major}}.{{minor}}.{{patch}}
293- type=semver,pattern={{major}}.{{minor}}
294- type=semver,pattern={{major}}
329+
330+ - name : Generate additional version tags (my-core-bot)
331+ id : version-tags-bot
332+ if : startsWith(github.ref, 'refs/tags/')
333+ run : |
334+ # Extract version from tag (remove 'v' prefix if present)
335+ VERSION=${GITHUB_REF#refs/tags/}
336+ VERSION=${VERSION#v}
337+
338+ # Split version into parts
339+ IFS='.' read -r -a parts <<< "$VERSION"
340+
341+ # Generate hierarchical tags based on number of parts
342+ ADDITIONAL_TAGS=""
343+ if [ ${#parts[@]} -ge 1 ]; then
344+ ADDITIONAL_TAGS="${{ env.BOT_IMAGE }}:v${parts[0]}"
345+ fi
346+ if [ ${#parts[@]} -ge 2 ]; then
347+ ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.BOT_IMAGE }}:v${parts[0]}.${parts[1]}"
348+ fi
349+ if [ ${#parts[@]} -ge 3 ]; then
350+ ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.BOT_IMAGE }}:v${parts[0]}.${parts[1]}.${parts[2]}"
351+ fi
352+ if [ ${#parts[@]} -ge 4 ]; then
353+ ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.BOT_IMAGE }}:v${parts[0]}.${parts[1]}.${parts[2]}.${parts[3]}"
354+ fi
355+
356+ echo "additional-tags=$ADDITIONAL_TAGS" >> $GITHUB_OUTPUT
357+ echo "Generated additional tags: $ADDITIONAL_TAGS"
295358
296359 - name : Create manifest list and push (my-core-bot)
297360 working-directory : ${{ runner.temp }}/digests-bot
298361 run : |
362+ # Create manifest for base tags from metadata
299363 docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \
300364 $(printf '${{ env.BOT_IMAGE }}@sha256:%s ' *)
365+
366+ # Create manifest for additional version tags if they exist
367+ if [ -n "${{ steps.version-tags-bot.outputs.additional-tags }}" ]; then
368+ IFS=',' read -r -a additional_tags <<< "${{ steps.version-tags-bot.outputs.additional-tags }}"
369+ for tag in "${additional_tags[@]}"; do
370+ if [ -n "$tag" ]; then
371+ echo "Creating manifest for additional tag: $tag"
372+ docker buildx imagetools create -t "$tag" \
373+ $(printf '${{ env.BOT_IMAGE }}@sha256:%s ' *)
374+ fi
375+ done
376+ fi
301377
302378 - name : Inspect image (my-core-bot)
303379 run : |
0 commit comments