Skip to content

Merge pull request #91 from bejamas/feat/upgrade-to-v6 #334

Merge pull request #91 from bejamas/feat/upgrade-to-v6

Merge pull request #91 from bejamas/feat/upgrade-to-v6 #334

name: Canary Release
on:
push:
branches:
- main
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
release:
if: github.repository_owner == 'bejamas'
name: Build & Publish a canary release to NPM
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: bun install
- name: Set canary versions
run: bun .github/version-release-canary.ts
- name: Build packages
run: bun run build:packages
- name: Setup npmrc
run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_ACCESS_TOKEN }}" > ~/.npmrc
- name: Publish canary packages
run: |
# Get changed files in this commit
CHANGED_FILES=$(git diff --name-only HEAD~1 HEAD)
cd packages
for package in */; do
if [ -f "${package}package.json" ]; then
PACKAGE_NAME=$(cat "${package}package.json" | grep '"name"' | head -1 | cut -d'"' -f4)
IS_PRIVATE=$(cat "${package}package.json" | grep -o '"private"[[:space:]]*:[[:space:]]*true' || echo "")
if [ -z "$IS_PRIVATE" ]; then
# Check if this package has changes
PACKAGE_CHANGED=$(echo "$CHANGED_FILES" | grep "^packages/${package%/}/" || echo "")
if [ -n "$PACKAGE_CHANGED" ]; then
cd "$package"
echo "📦 Publishing $PACKAGE_NAME (has changes)..."
bun publish --tag canary --access public 2>&1 || echo "⚠️ Failed to publish $PACKAGE_NAME"
cd ..
else
echo "⏭️ Skipping $PACKAGE_NAME (no changes)"
fi
fi
fi
done
env:
NPM_CONFIG_TOKEN: ${{ secrets.NPM_ACCESS_TOKEN }}