| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- name: Publish Minor Branch to NPM
- on:
- workflow_dispatch:
- # Nightly run at 02:00 UTC
- schedule:
- - cron: '0 2 * * *'
- jobs:
- publish:
- runs-on: ubuntu-latest
- permissions:
- contents: read
- id-token: write
- # Only allow workflow to run on minor branch
- if: github.ref == 'refs/heads/minor'
- steps:
- - name: Checkout
- uses: actions/checkout@v4
- with:
- fetch-depth: 0
- # Check if branch received commits in the last 24 h; skip remainder if none
- - name: Check for new commits
- id: commit_check
- run: |
- # Count commits on this branch since 24 h ago
- COMMITS=$(git rev-list --count --since="24 hours" HEAD)
- echo "Commits found: $COMMITS"
- if [ "$COMMITS" -eq 0 ]; then
- echo "should_publish=false" >> $GITHUB_OUTPUT
- else
- echo "should_publish=true" >> $GITHUB_OUTPUT
- fi
- - name: Setup Node.js
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- uses: actions/setup-node@v4
- with:
- node-version: '22.x'
- registry-url: 'https://registry.npmjs.org'
- - name: Install dependencies
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- run: npm install --no-save
- - name: Get current date
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- id: date
- run: echo "date=$(date +'%Y%m%d%H%M')" >> $GITHUB_OUTPUT
- - name: Configure Git
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- run: |
- git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
- git config --global user.name "github-actions[bot]"
- - name: Version and build packages
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- 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 minor version for pre-release
- MINOR=$((VERSION_PARTS[1] + 1))
- # Compose new pre-release version incl. timestamp
- NEW_VERSION="${VERSION_PARTS[0]}.${MINOR}.0-minor-${{ steps.date.outputs.date }}"
- npx lerna version $NEW_VERSION --no-git-tag-version --yes --no-push --force-publish
- - name: Commit changes
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- run: |
- git add .
- git commit -m "chore: Bump version for minor pre-release to $NEW_VERSION"
- - name: Publish to NPM
- if: ${{ steps.commit_check.outputs.should_publish == 'true' }}
- run: npx lerna publish from-package --yes --dist-tag minor --no-git-reset
- env:
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- NPM_CONFIG_PROVENANCE: true
- # Informative noop when skipping
- - name: Skip publish
- if: ${{ steps.commit_check.outputs.should_publish == 'false' }}
- run: echo "No new commits in last 24 hours – skipping publish."
|