mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 16:14:40 +00:00
50 lines
1.6 KiB
YAML
50 lines
1.6 KiB
YAML
name: Assert Stable Release
|
|
description: >-
|
|
Defense-in-depth guard for package-manager bump workflows. Re-validates
|
|
tag format, prerelease flag, and draft status before invoking third-party
|
|
actions that hold write credentials to external package manager repos.
|
|
|
|
inputs:
|
|
tag:
|
|
description: "Tag to validate (e.g. vX.YY.Z)"
|
|
required: true
|
|
is_prerelease:
|
|
description: "Whether the release is marked as prerelease (empty string treated as false)"
|
|
required: false
|
|
default: "false"
|
|
is_draft:
|
|
description: "Whether the release is a draft (empty string treated as false)"
|
|
required: false
|
|
default: "false"
|
|
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: Assert release is stable
|
|
shell: bash
|
|
env:
|
|
TAG: ${{ inputs.tag }}
|
|
IS_PRERELEASE: ${{ inputs.is_prerelease }}
|
|
IS_DRAFT: ${{ inputs.is_draft }}
|
|
run: |
|
|
set -euo pipefail
|
|
echo "tag=$TAG prerelease=$IS_PRERELEASE draft=$IS_DRAFT"
|
|
|
|
# Stable = exactly vMAJOR.MINOR.PATCH; reject everything else.
|
|
if ! [[ "$TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
echo "::error::Tag $TAG does not match stable vMAJOR.MINOR.PATCH format; refusing bump"
|
|
exit 1
|
|
fi
|
|
|
|
# Draft releases must never trigger bumps.
|
|
if [[ "$IS_DRAFT" == "true" ]]; then
|
|
echo "::error::Release is draft; refusing bump"
|
|
exit 1
|
|
fi
|
|
|
|
# Prerelease flag cross-check (belt-and-suspenders with workflow-level `if:`).
|
|
if [[ "$IS_PRERELEASE" == "true" ]]; then
|
|
echo "::error::Release is prerelease; refusing bump"
|
|
exit 1
|
|
fi
|