Skip to content

Commit 201c8a8

Browse files
committed
chore: add rc release handling
1 parent 0e89407 commit 201c8a8

1 file changed

Lines changed: 35 additions & 5 deletions

File tree

.github/workflows/release.yml

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ jobs:
2424
outputs:
2525
version: ${{ steps.version.outputs.version }}
2626
tag: ${{ steps.version.outputs.tag }}
27+
major_minor: ${{ steps.version.outputs.major_minor }}
28+
is_prerelease: ${{ steps.version.outputs.is_prerelease }}
2729
steps:
2830
- name: Extract version
2931
id: version
@@ -34,11 +36,27 @@ jobs:
3436
if [ "$EVENT_NAME" = "workflow_dispatch" ]; then
3537
echo "tag=" >> "$GITHUB_OUTPUT"
3638
echo "version=manual-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT"
39+
echo "major_minor=" >> "$GITHUB_OUTPUT"
40+
echo "is_prerelease=false" >> "$GITHUB_OUTPUT"
3741
exit 0
3842
fi
3943
44+
if [[ ! "$REF_NAME" =~ ^v([0-9]+\.[0-9]+\.[0-9]+)(-rc\.[0-9]+)?$ ]]; then
45+
echo "Unsupported release tag format: $REF_NAME" >&2
46+
exit 1
47+
fi
48+
49+
version="${BASH_REMATCH[1]}${BASH_REMATCH[2]}"
50+
major_minor="${BASH_REMATCH[1]%.*}"
51+
is_prerelease=false
52+
if [ -n "${BASH_REMATCH[2]}" ]; then
53+
is_prerelease=true
54+
fi
55+
4056
echo "tag=${REF_NAME}" >> "$GITHUB_OUTPUT"
41-
echo "version=${REF_NAME#v}" >> "$GITHUB_OUTPUT"
57+
echo "version=${version}" >> "$GITHUB_OUTPUT"
58+
echo "major_minor=${major_minor}" >> "$GITHUB_OUTPUT"
59+
echo "is_prerelease=${is_prerelease}" >> "$GITHUB_OUTPUT"
4260
4361
build-frontend:
4462
name: Build Frontend
@@ -226,6 +244,7 @@ jobs:
226244
tag_name: ${{ needs.prepare.outputs.tag }}
227245
name: ${{ needs.prepare.outputs.tag }}
228246
generate_release_notes: true
247+
prerelease: ${{ needs.prepare.outputs.is_prerelease == 'true' }}
229248
files: artifacts/*
230249

231250
build-push:
@@ -301,7 +320,7 @@ jobs:
301320
retention-days: 1
302321

303322
merge-images:
304-
name: Publish Stable Image Tags
323+
name: Publish Release Image Tags
305324
needs: [prepare, build-push]
306325
if: github.event_name != 'workflow_dispatch'
307326
runs-on: ubuntu-latest
@@ -336,17 +355,28 @@ jobs:
336355
working-directory: /tmp/digests
337356
run: |
338357
version="${{ needs.prepare.outputs.version }}"
339-
major_minor=$(echo "$version" | cut -d. -f1,2)
358+
if [ "${{ needs.prepare.outputs.is_prerelease }}" = "true" ]; then
359+
docker buildx imagetools create \
360+
-t "neosmemo/memos:${version}" \
361+
-t "ghcr.io/usememos/memos:${version}" \
362+
$(printf 'neosmemo/memos@sha256:%s ' *)
363+
exit 0
364+
fi
365+
340366
docker buildx imagetools create \
341367
-t "neosmemo/memos:${version}" \
342-
-t "neosmemo/memos:${major_minor}" \
368+
-t "neosmemo/memos:${{ needs.prepare.outputs.major_minor }}" \
343369
-t "neosmemo/memos:stable" \
344370
-t "ghcr.io/usememos/memos:${version}" \
345-
-t "ghcr.io/usememos/memos:${major_minor}" \
371+
-t "ghcr.io/usememos/memos:${{ needs.prepare.outputs.major_minor }}" \
346372
-t "ghcr.io/usememos/memos:stable" \
347373
$(printf 'neosmemo/memos@sha256:%s ' *)
348374
349375
- name: Inspect images
350376
run: |
351377
docker buildx imagetools inspect neosmemo/memos:${{ needs.prepare.outputs.version }}
378+
if [ "${{ needs.prepare.outputs.is_prerelease }}" = "true" ]; then
379+
exit 0
380+
fi
381+
352382
docker buildx imagetools inspect neosmemo/memos:stable

0 commit comments

Comments
 (0)