Skip to content

Fix output schema for admin store product endpoint (#688) #50

Fix output schema for admin store product endpoint (#688)

Fix output schema for admin store product endpoint (#688) #50

Workflow file for this run

# .github/workflows/release.yml
name: Auto Release
on:
push:
branches:
- 'main'
paths:
- 'package.json'
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Generate GitHub App token
id: app-token
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.AUTOMATED_RELEASE_APP_ID }}
private-key: ${{ secrets.AUTOMATED_RELEASE_APP_KEY }}
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 2
token: ${{ steps.app-token.outputs.token }}
- name: Check if version changed
id: version
run: |
# Get current version
CURRENT_VERSION=$(jq -r '.version' package.json)
# Get previous version
git show HEAD~1:package.json > /tmp/old-package.json 2>/dev/null || echo '{"version":"0.0.0"}' > /tmp/old-package.json
PREVIOUS_VERSION=$(jq -r '.version' /tmp/old-package.json)
echo "current=$CURRENT_VERSION" >> $GITHUB_OUTPUT
echo "previous=$PREVIOUS_VERSION" >> $GITHUB_OUTPUT
if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then
echo "changed=true" >> $GITHUB_OUTPUT
else
echo "changed=false" >> $GITHUB_OUTPUT
fi
# Check if prerelease (contains hyphen)
if [[ "$CURRENT_VERSION" == *-* ]]; then
echo "prerelease=true" >> $GITHUB_OUTPUT
else
echo "prerelease=false" >> $GITHUB_OUTPUT
fi
- name: Validate version increment
if: steps.version.outputs.changed == 'true'
run: |
CURRENT="${{ steps.version.outputs.current }}"
PREVIOUS="${{ steps.version.outputs.previous }}"
# Function to compare semver versions
version_compare() {
# Strip prerelease suffix for base comparison
local v1_base="${1%%-*}"
local v2_base="${2%%-*}"
local v1_pre="${1#*-}"
local v2_pre="${2#*-}"
# If no prerelease, set to empty
[[ "$v1_base" == "$1" ]] && v1_pre=""
[[ "$v2_base" == "$2" ]] && v2_pre=""
# Compare major.minor.patch
IFS='.' read -ra V1 <<< "$v1_base"
IFS='.' read -ra V2 <<< "$v2_base"
for i in 0 1 2; do
local n1="${V1[$i]:-0}"
local n2="${V2[$i]:-0}"
if (( n1 > n2 )); then
echo "greater"
return
elif (( n1 < n2 )); then
echo "lesser"
return
fi
done
# Base versions equal, compare prerelease
# No prerelease > prerelease (1.0.0 > 1.0.0-beta)
if [[ -z "$v1_pre" && -n "$v2_pre" ]]; then
echo "greater"
elif [[ -n "$v1_pre" && -z "$v2_pre" ]]; then
echo "lesser"
elif [[ "$v1_pre" > "$v2_pre" ]]; then
echo "greater"
elif [[ "$v1_pre" < "$v2_pre" ]]; then
echo "lesser"
else
echo "equal"
fi
}
RESULT=$(version_compare "$CURRENT" "$PREVIOUS")
if [[ "$RESULT" == "lesser" ]]; then
echo "::error::Version downgrade detected: $PREVIOUS → $CURRENT"
echo "Version must be incremented, not decremented."
exit 1
fi
echo "✓ Version increment valid: $PREVIOUS → $CURRENT"
- name: Create Release
if: steps.version.outputs.changed == 'true'
uses: actions/github-script@v9
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
const version = '${{ steps.version.outputs.current }}';
const isPrerelease = ${{ steps.version.outputs.prerelease }};
const tagName = `v${version}`;
const release = await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: tagName,
name: tagName,
target_commitish: context.sha,
generate_release_notes: true,
prerelease: isPrerelease
});
console.log(`Created ${isPrerelease ? 'prerelease' : 'release'}: ${release.data.html_url}`);