Repository navigation
4.2.0 #8
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| release: | |
| types: [ published ] | |
| permissions: | |
| contents: write | |
| packages: write | |
| jobs: | |
| publish: | |
| name: Publish to NPM | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| ref: main | |
| token: ${{ secrets.GITHUB_TOKEN }} | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20.x' | |
| cache: 'npm' | |
| registry-url: 'https://registry.npmjs.org' | |
| - name: Install dependencies | |
| run: npm ci | |
| - name: Run tests before publishing | |
| run: npm test | |
| - name: Run linting before publishing | |
| run: npm run lint | |
| - name: Check formatting before publishing | |
| run: npm run format:check | |
| - name: Verify package.json | |
| run: | | |
| echo "📦 Package details:" | |
| echo " Name: $(npm pkg get name)" | |
| echo " Version: $(npm pkg get version)" | |
| echo " Description: $(npm pkg get description)" | |
| echo " Main: $(npm pkg get main)" | |
| echo " Bin: $(npm pkg get bin)" | |
| echo " Files: $(npm pkg get files)" | |
| echo " Repository: $(npm pkg get repository)" | |
| - name: Test CLI functionality | |
| run: | | |
| echo "🧪 Testing CLI functionality..." | |
| npm start -- --help | |
| npm start -- --version | |
| echo "✅ CLI tests passed" | |
| - name: Publish to NPM | |
| run: | | |
| echo "📦 Publishing to NPM..." | |
| # Get the version from the release tag | |
| # GITHUB_REF format: refs/tags/v2.3.0 | |
| VERSION=${GITHUB_REF##*/} # Remove everything up to the last / | |
| VERSION=${VERSION#v} # Remove the 'v' prefix if present | |
| echo "📋 Publishing version: $VERSION" | |
| echo "📋 Original GITHUB_REF: $GITHUB_REF" | |
| # Check if version update is needed | |
| CURRENT_VERSION=$(npm pkg get version | tr -d '"') | |
| echo "📋 Current package.json version: $CURRENT_VERSION" | |
| if [ "$CURRENT_VERSION" != "$VERSION" ]; then | |
| echo "📋 Updating version from $CURRENT_VERSION to $VERSION" | |
| npm version $VERSION --no-git-tag-version | |
| else | |
| echo "📋 Version $VERSION already set in package.json - skipping version update" | |
| fi | |
| # Publish to NPM | |
| npm publish --access public | |
| echo "✅ Successfully published to NPM!" | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
| - name: Verify NPM publication | |
| run: | | |
| echo "🔍 Verifying NPM publication..." | |
| PACKAGE_NAME=$(npm pkg get name | tr -d '"') | |
| VERSION=${GITHUB_REF##*/} # Remove everything up to the last / | |
| VERSION=${VERSION#v} # Remove the 'v' prefix if present | |
| echo "📦 Published: $PACKAGE_NAME@$VERSION" | |
| echo "🌐 NPM URL: https://www.npmjs.com/package/$PACKAGE_NAME" | |
| # Wait a moment for NPM to process | |
| sleep 10 | |
| # Verify the package exists on NPM | |
| if npm view "$PACKAGE_NAME@$VERSION" version > /dev/null 2>&1; then | |
| echo "✅ Package successfully published to NPM!" | |
| echo "📋 Package info:" | |
| npm view "$PACKAGE_NAME@$VERSION" | |
| else | |
| echo "❌ Package not found on NPM. This might be a timing issue." | |
| echo "🔍 Checking latest version..." | |
| npm view "$PACKAGE_NAME" version || echo "Package not yet available" | |
| fi | |
| - name: Create release summary | |
| run: | | |
| PACKAGE_NAME=$(npm pkg get name | tr -d '"') | |
| VERSION=${GITHUB_REF##*/} # Remove everything up to the last / | |
| VERSION=${VERSION#v} # Remove the 'v' prefix if present | |
| echo "## 🎉 Release Summary" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Package:** \`$PACKAGE_NAME@$VERSION\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**NPM URL:** https://www.npmjs.com/package/$PACKAGE_NAME" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "**Installation:**" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY | |
| echo "npm install -g $PACKAGE_NAME" >> $GITHUB_STEP_SUMMARY | |
| echo "# or" >> $GITHUB_STEP_SUMMARY | |
| echo "npx $PACKAGE_NAME" >> $GITHUB_STEP_SUMMARY | |
| echo "\`\`\`" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "✅ All tests passed" >> $GITHUB_STEP_SUMMARY | |
| echo "✅ Linting passed" >> $GITHUB_STEP_SUMMARY | |
| echo "✅ Formatting passed" >> $GITHUB_STEP_SUMMARY | |
| echo "✅ Package published to NPM" >> $GITHUB_STEP_SUMMARY |