Skip to content

Commit 055dc80

Browse files
Merge pull request #56 from 42core-team/copilot/fix-a23a09fe-1920-40bc-a689-7bedf07d0d6d
2 parents b3f209d + f61dbf4 commit 055dc80

File tree

2 files changed

+141
-17
lines changed

2 files changed

+141
-17
lines changed

.github/workflows/game.yml

Lines changed: 84 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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: |

.github/workflows/visualizer.yml

Lines changed: 57 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,6 @@ jobs:
6565
type=ref,event=tag
6666
type=sha,format=short,prefix={{branch}}-
6767
type=raw,value=latest,enable={{is_default_branch}}
68-
type=semver,pattern={{version}}
69-
type=semver,pattern={{major}}.{{minor}}.{{patch}}
70-
type=semver,pattern={{major}}.{{minor}}
71-
type=semver,pattern={{major}}
7268
labels: |
7369
org.opencontainers.image.title=Debug Visualizer
7470
org.opencontainers.image.description=Debug visualizer web application
@@ -161,21 +157,46 @@ jobs:
161157
type=ref,event=tag
162158
type=sha,format=short,prefix={{branch}}-
163159
type=raw,value=latest,enable={{is_default_branch}}
164-
type=semver,pattern={{version}}
165-
type=semver,pattern={{major}}.{{minor}}.{{patch}}
166-
type=semver,pattern={{major}}.{{minor}}
167-
type=semver,pattern={{major}}
168160
labels: |
169161
org.opencontainers.image.title=Debug Visualizer
170162
org.opencontainers.image.description=Debug visualizer web application
171163
org.opencontainers.image.vendor=${{ github.repository_owner }}
172164
165+
- name: Generate additional version tags
166+
id: version-tags
167+
if: startsWith(github.ref, 'refs/tags/')
168+
run: |
169+
# Extract version from tag (remove 'v' prefix if present)
170+
VERSION=${GITHUB_REF#refs/tags/}
171+
VERSION=${VERSION#v}
172+
173+
# Split version into parts
174+
IFS='.' read -r -a parts <<< "$VERSION"
175+
176+
# Generate hierarchical tags based on number of parts
177+
ADDITIONAL_TAGS=""
178+
if [ ${#parts[@]} -ge 1 ]; then
179+
ADDITIONAL_TAGS="${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:v${parts[0]}"
180+
fi
181+
if [ ${#parts[@]} -ge 2 ]; then
182+
ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:v${parts[0]}.${parts[1]}"
183+
fi
184+
if [ ${#parts[@]} -ge 3 ]; then
185+
ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:v${parts[0]}.${parts[1]}.${parts[2]}"
186+
fi
187+
if [ ${#parts[@]} -ge 4 ]; then
188+
ADDITIONAL_TAGS="$ADDITIONAL_TAGS,${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:v${parts[0]}.${parts[1]}.${parts[2]}.${parts[3]}"
189+
fi
190+
191+
echo "additional-tags=$ADDITIONAL_TAGS" >> $GITHUB_OUTPUT
192+
echo "Generated additional tags: $ADDITIONAL_TAGS"
193+
173194
- name: Create multi-architecture manifest
174195
run: |
175196
# Get the tags from metadata (convert newlines to spaces for proper iteration)
176197
TAGS=$(echo "${{ steps.meta.outputs.tags }}" | tr '\n' ' ')
177198
178-
# Create manifest for each tag
199+
# Create manifest for each tag from metadata
179200
for tag in $TAGS; do
180201
# Skip empty tags
181202
if [[ -z "$tag" ]]; then
@@ -192,6 +213,33 @@ jobs:
192213
echo "Manifest created for $tag"
193214
done
194215
216+
# Create manifest for additional version tags if they exist
217+
if [ -n "${{ steps.version-tags.outputs.additional-tags }}" ]; then
218+
# Find the ref tag from the base tags to use as source
219+
REF_TAG=""
220+
for tag in $TAGS; do
221+
if [[ "$tag" == *"$GITHUB_REF_NAME" ]] && [[ "$tag" != *"-"* ]]; then
222+
REF_TAG="$tag"
223+
break
224+
fi
225+
done
226+
227+
if [ -n "$REF_TAG" ]; then
228+
IFS=',' read -r -a additional_tags <<< "${{ steps.version-tags.outputs.additional-tags }}"
229+
for tag in "${additional_tags[@]}"; do
230+
if [ -n "$tag" ]; then
231+
echo "Creating additional tag: $tag from $REF_TAG"
232+
# Create additional tags from the ref tag that was already built
233+
docker buildx imagetools create -t "$tag" \
234+
"${REF_TAG}-amd64" \
235+
"${REF_TAG}-arm64"
236+
237+
echo "Additional manifest created for $tag"
238+
fi
239+
done
240+
fi
241+
fi
242+
195243
- name: Show manifest information
196244
run: |
197245
echo "Multi-architecture manifest created"

0 commit comments

Comments
 (0)