Skip to content

Commit 59aebc3

Browse files
committed
fix: handle npm versioning properly in GitHub Actions
- Fix version extraction when no git tags exist - Create proper semver versions for npm packages - Add version validation step before publishing - Prevent publishing with invalid commit hash versions This fixes the 'Invalid version: "39bb153"' error by ensuring npm packages always have valid semantic versions.
1 parent 39bb153 commit 59aebc3

File tree

1 file changed

+33
-2
lines changed

1 file changed

+33
-2
lines changed

.github/workflows/publish-npm.yml

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,19 @@ jobs:
5757
- name: Get version
5858
id: version
5959
run: |
60-
VERSION=$(git describe --tags --always --dirty)
60+
# Try to get version from git tags, fallback to base version + commit hash
61+
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "v0.0.53")
62+
63+
# If VERSION is just a commit hash, create a proper version
64+
if [[ $VERSION =~ ^[0-9a-f]{7,}$ ]]; then
65+
VERSION="v0.0.53-${VERSION}"
66+
fi
67+
68+
# Remove 'v' prefix for npm version
69+
NPM_VERSION=$(echo $VERSION | sed 's/^v//')
70+
6171
echo "version=$VERSION" >> $GITHUB_OUTPUT
62-
echo "npm_version=$(echo $VERSION | sed 's/^v//')" >> $GITHUB_OUTPUT
72+
echo "npm_version=$NPM_VERSION" >> $GITHUB_OUTPUT
6373
6474
- name: Prepare packages
6575
run: |
@@ -70,6 +80,27 @@ jobs:
7080
run: |
7181
find npm -name "package.json" -exec sed -i 's/"version": ".*"/"version": "${{ steps.version.outputs.npm_version }}"/' {} \;
7282
83+
- name: Validate versions
84+
run: |
85+
echo "🔍 Validating package versions..."
86+
87+
# Check main package
88+
MAIN_VERSION=$(cat npm/kubernetes-mcp-server/package.json | grep '"version"' | cut -d'"' -f4)
89+
echo "Main package version: $MAIN_VERSION"
90+
91+
# Check platform packages
92+
for platform in "darwin-amd64" "darwin-arm64" "linux-amd64" "linux-arm64" "windows-amd64" "windows-arm64"; do
93+
PLATFORM_VERSION=$(cat "npm/kubernetes-mcp-server-$platform/package.json" | grep '"version"' | cut -d'"' -f4)
94+
echo "Platform $platform version: $PLATFORM_VERSION"
95+
96+
if [ "$MAIN_VERSION" != "$PLATFORM_VERSION" ]; then
97+
echo "❌ Version mismatch: main ($MAIN_VERSION) vs $platform ($PLATFORM_VERSION)"
98+
exit 1
99+
fi
100+
done
101+
102+
echo "✅ All package versions are consistent: $MAIN_VERSION"
103+
73104
- name: Build
74105
run: |
75106
make build-all-platforms

0 commit comments

Comments
 (0)