Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions docs/scripts/check-release-tag.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#!/bin/bash

# Vercel Ignored Build Step script
# Exit 0 = Skip build
# Exit 1 = Proceed with build

# Always build preview deployments
if [ "$VERCEL_ENV" != "production" ]; then
echo "Preview deployment - proceeding with build"
exit 1
fi

# For production: only build if the commit is tagged with a release
echo "Production deployment - checking for release tag..."

# Fetch tags from remote (Vercel does shallow clones)
git fetch --tags --quiet 2>/dev/null || true

# Check if current commit has a version tag (e.g., v1.0.0, 1.0.0)
TAGS=$(git tag --points-at HEAD 2>/dev/null)

if [ -z "$TAGS" ]; then
echo "No tags found on this commit - skipping production build"
echo "Production deployments only occur on tagged releases"
exit 0
fi

# Check if any tag matches a version pattern
for TAG in $TAGS; do
if echo "$TAG" | grep -qE '^v?[0-9]+\.[0-9]+\.[0-9]+'; then
Copy link

Copilot AI Jan 30, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The regex pattern will match prerelease version tags like "v1.0.0-beta" or "v0.0.0-z123abc" because it doesn't anchor at the end of the string. Based on the PR description stating "Production deployments only proceed when the commit has a release tag (e.g., v1.0.0)", it appears the intention is to match only stable release versions, not prereleases. Consider anchoring the pattern at the end with '$' or adding explicit exclusion of prerelease suffixes: '^v?[0-9]+.[0-9]+.[0-9]+$'

Suggested change
if echo "$TAG" | grep -qE '^v?[0-9]+\.[0-9]+\.[0-9]+'; then
if echo "$TAG" | grep -qE '^v?[0-9]+\.[0-9]+\.[0-9]+$'; then

Copilot uses AI. Check for mistakes.
echo "Found release tag: $TAG - proceeding with production build"
exit 1
fi
done

echo "No release tags found (tags: $TAGS) - skipping production build"
exit 0