chore: prepare for v5.0.0-rc.1 release

- Update VERSION to 5.0.0-rc.1
- Add prerelease detection to create-release workflow
- Mark RC releases as prereleases on GitHub (not 'latest')
- Update publish-docker workflow to skip :latest tag for RCs
- Support -rc.N, -alpha.N, and -beta.N version suffixes
This commit is contained in:
rcourtman 2025-12-14 16:23:40 +00:00
parent 2e06f6b966
commit 12ef347912
3 changed files with 92 additions and 29 deletions

View file

@ -28,9 +28,18 @@ jobs:
run: |
TAG="${{ github.event.release.tag_name || inputs.tag }}"
VERSION="${TAG#v}"
# Detect if this is a prerelease (RC, alpha, beta)
IS_PRERELEASE="false"
if [[ "$VERSION" =~ -rc\.[0-9]+$ ]] || [[ "$VERSION" =~ -alpha\.[0-9]+$ ]] || [[ "$VERSION" =~ -beta\.[0-9]+$ ]]; then
IS_PRERELEASE="true"
echo "Detected prerelease version - will NOT update :latest tag"
fi
echo "tag=${TAG}" >> $GITHUB_OUTPUT
echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "Publishing Docker images for ${TAG}"
echo "is_prerelease=${IS_PRERELEASE}" >> $GITHUB_OUTPUT
echo "Publishing Docker images for ${TAG} (prerelease: ${IS_PRERELEASE})"
- name: Log in to Docker Hub
uses: docker/login-action@v3
@ -75,36 +84,69 @@ jobs:
return 1
}
IS_PRERELEASE="${{ steps.version.outputs.is_prerelease }}"
echo "Copying pulse staging image to final tags..."
retry_push "docker buildx imagetools create \
--tag rcourtman/pulse:${TAG} \
--tag rcourtman/pulse:${VERSION} \
--tag rcourtman/pulse:latest \
--tag ghcr.io/${{ github.repository_owner }}/pulse:${TAG} \
--tag ghcr.io/${{ github.repository_owner }}/pulse:${VERSION} \
--tag ghcr.io/${{ github.repository_owner }}/pulse:latest \
ghcr.io/${{ github.repository_owner }}/pulse:${STAGING_TAG}"
if [ "$IS_PRERELEASE" = "true" ]; then
# For prereleases, only tag with version - do NOT update :latest
retry_push "docker buildx imagetools create \
--tag rcourtman/pulse:${TAG} \
--tag rcourtman/pulse:${VERSION} \
--tag ghcr.io/${{ github.repository_owner }}/pulse:${TAG} \
--tag ghcr.io/${{ github.repository_owner }}/pulse:${VERSION} \
ghcr.io/${{ github.repository_owner }}/pulse:${STAGING_TAG}"
else
# For stable releases, also update :latest
retry_push "docker buildx imagetools create \
--tag rcourtman/pulse:${TAG} \
--tag rcourtman/pulse:${VERSION} \
--tag rcourtman/pulse:latest \
--tag ghcr.io/${{ github.repository_owner }}/pulse:${TAG} \
--tag ghcr.io/${{ github.repository_owner }}/pulse:${VERSION} \
--tag ghcr.io/${{ github.repository_owner }}/pulse:latest \
ghcr.io/${{ github.repository_owner }}/pulse:${STAGING_TAG}"
fi
echo "Copying pulse-docker-agent staging image to final tags..."
retry_push "docker buildx imagetools create \
--tag rcourtman/pulse-docker-agent:${TAG} \
--tag rcourtman/pulse-docker-agent:${VERSION} \
--tag rcourtman/pulse-docker-agent:latest \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${TAG} \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${VERSION} \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:latest \
ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${STAGING_TAG}"
if [ "$IS_PRERELEASE" = "true" ]; then
# For prereleases, only tag with version - do NOT update :latest
retry_push "docker buildx imagetools create \
--tag rcourtman/pulse-docker-agent:${TAG} \
--tag rcourtman/pulse-docker-agent:${VERSION} \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${TAG} \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${VERSION} \
ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${STAGING_TAG}"
else
# For stable releases, also update :latest
retry_push "docker buildx imagetools create \
--tag rcourtman/pulse-docker-agent:${TAG} \
--tag rcourtman/pulse-docker-agent:${VERSION} \
--tag rcourtman/pulse-docker-agent:latest \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${TAG} \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${VERSION} \
--tag ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:latest \
ghcr.io/${{ github.repository_owner }}/pulse-docker-agent:${STAGING_TAG}"
fi
- name: Output image information
run: |
IS_PRERELEASE="${{ steps.version.outputs.is_prerelease }}"
echo "✅ Docker images published successfully!"
echo ""
echo "Server images:"
echo " - rcourtman/pulse:${{ steps.version.outputs.tag }}"
echo " - rcourtman/pulse:${{ steps.version.outputs.version }}"
echo " - rcourtman/pulse:latest"
if [ "$IS_PRERELEASE" != "true" ]; then
echo " - rcourtman/pulse:latest"
fi
echo ""
echo "Agent images:"
echo " - rcourtman/pulse-docker-agent:${{ steps.version.outputs.tag }}"
echo " - rcourtman/pulse-docker-agent:${{ steps.version.outputs.version }}"
echo " - rcourtman/pulse-docker-agent:latest"
if [ "$IS_PRERELEASE" != "true" ]; then
echo " - rcourtman/pulse-docker-agent:latest"
fi
echo ""
if [ "$IS_PRERELEASE" = "true" ]; then
echo "Note: :latest tags were NOT updated (this is a prerelease)"
fi