|
|
@@ -0,0 +1,58 @@
|
|
|
+name: Publish Master Branch to NPM
|
|
|
+
|
|
|
+on:
|
|
|
+ workflow_dispatch:
|
|
|
+ push:
|
|
|
+ branches:
|
|
|
+ - master
|
|
|
+
|
|
|
+jobs:
|
|
|
+ publish:
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ permissions:
|
|
|
+ contents: read
|
|
|
+ id-token: write
|
|
|
+
|
|
|
+ # Only allow workflow to run on master branch
|
|
|
+ if: github.ref == 'refs/heads/master'
|
|
|
+
|
|
|
+ steps:
|
|
|
+ - name: Checkout
|
|
|
+ uses: actions/checkout@v4
|
|
|
+ with:
|
|
|
+ fetch-depth: 0
|
|
|
+
|
|
|
+ - name: Setup Node.js
|
|
|
+ uses: actions/setup-node@v4
|
|
|
+ with:
|
|
|
+ node-version: '22.x'
|
|
|
+ registry-url: 'https://registry.npmjs.org'
|
|
|
+
|
|
|
+ - name: Install dependencies
|
|
|
+ run: npm install --no-save
|
|
|
+
|
|
|
+ - name: Get current date
|
|
|
+ id: date
|
|
|
+ run: echo "date=$(date +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT
|
|
|
+
|
|
|
+ - name: Version and build packages
|
|
|
+ run: |
|
|
|
+ # Get the current version from lerna.json
|
|
|
+ CURRENT_VERSION=$(node -p "require('./lerna.json').version")
|
|
|
+ # Split version into parts
|
|
|
+ IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION"
|
|
|
+ # Increment patch version
|
|
|
+ PATCH=$((VERSION_PARTS[2] + 1))
|
|
|
+ # Create new version with date
|
|
|
+ NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.${PATCH}-master-${{ steps.date.outputs.date }}"
|
|
|
+ # Update version using lerna directly
|
|
|
+ npx lerna version $NEW_VERSION --no-git-tag-version --yes --no-push --force-publish
|
|
|
+
|
|
|
+ - name: Build packages
|
|
|
+ run: npm run build
|
|
|
+
|
|
|
+ - name: Publish to NPM
|
|
|
+ run: npx lerna publish from-package --yes --dist-tag master --no-git-reset --no-verify-access
|
|
|
+ env:
|
|
|
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
|
+ NPM_CONFIG_PROVENANCE: true
|