Skip to content

feat: advanced state mapping support #63

feat: advanced state mapping support

feat: advanced state mapping support #63

Workflow file for this run

name: Publish
on:
pull_request:
paths-ignore:
- '.changeset/**'
- '.husky/**'
push:
branches:
- main
concurrency:
group: publish-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
pull-requests: write
id-token: write # Required for trusted publishing (OIDC)
jobs:
publish-canary:
name: 'Build & canary release'
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
env:
NODE_OPTIONS: --max-old-space-size=4096
steps:
- uses: actions/checkout@v4
- name: Update Corepack
run: npm i -g corepack@latest
- name: Enable Corepack (pre)
run: corepack enable
- name: Prepare pnpm (pre)
run: corepack prepare [email protected] --activate
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'pnpm'
- name: Enable Corepack
run: corepack enable
- name: Prepare pnpm
run: corepack prepare [email protected] --activate
# Ensure npm 11.5.1+ for trusted publishing
- name: Update npm for trusted publishing
run: npm install -g npm@latest
- name: Verify npm version and OIDC availability
run: |
echo "npm version: $(npm --version)"
echo "OIDC available: ${{ env.ACTIONS_ID_TOKEN_REQUEST_URL != '' }}"
- name: Install dependencies
run: pnpm install
- name: Set version info
id: version
run: |
SHORT_SHA=$(git rev-parse --short "$GITHUB_SHA")
VERSION="0.0.0-canary-$SHORT_SHA"
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "short_sha=$SHORT_SHA" >> $GITHUB_OUTPUT
- name: Set canary version
run: npm version ${{ steps.version.outputs.version }} --no-git-tag-version
- name: Build project
run: pnpm build
- name: Clear .npmrc auth token (use OIDC instead)
run: npm config delete //registry.npmjs.org/:_authToken || true
- name: Publish canary to npm
working-directory: ./dist
run: npm publish --access public --tag pr_${{ github.event.number }} --provenance
- name: Comment PR
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const setMessage = require('${{ github.workspace }}/scripts/ci/set-message.cjs')
await setMessage({
header: "## :package: NPM canary release",
body: 'Deployed canary version [${{ steps.version.outputs.version }}](https://www.npmjs.com/package/@cube-dev/ui-kit/v/${{ steps.version.outputs.version }}).',
github,
repo: context.repo,
prNumber: ${{ github.event.number }}
})
publish-release:
name: 'Publish release'
if: github.event_name == 'push'
runs-on: ubuntu-latest
env:
NODE_OPTIONS: --max-old-space-size=4096
outputs:
published: ${{ steps.changesets.outputs.published }}
steps:
- uses: actions/checkout@v4
- name: Update Corepack
run: npm i -g corepack@latest
- name: Enable Corepack (pre)
run: corepack enable
- name: Prepare pnpm (pre)
run: corepack prepare [email protected] --activate
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
registry-url: 'https://registry.npmjs.org'
cache: 'pnpm'
- name: Enable Corepack
run: corepack enable
- name: Prepare pnpm
run: corepack prepare [email protected] --activate
# Ensure npm 11.5.1+ for trusted publishing
- name: Update npm for trusted publishing
run: npm install -g npm@latest
- name: Verify npm version and OIDC availability
run: |
echo "npm version: $(npm --version)"
echo "OIDC available: ${{ env.ACTIONS_ID_TOKEN_REQUEST_URL != '' }}"
- name: Install Dependencies
run: pnpm install
- name: Clear .npmrc auth token (use OIDC instead)
run: npm config delete //registry.npmjs.org/:_authToken || true
- name: Create Release Pull Request or Publish to npm
id: changesets
uses: changesets/action@v1
with:
publish: pnpm release
commit: 'chore: release'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# NPM_TOKEN not needed - using trusted publishing (OIDC)
deploy-chromatic-release:
name: 'Deploy storybook to Chromatic'
needs: publish-release
if: github.event_name == 'push' && needs.publish-release.outputs.published == 'false'
runs-on: ubuntu-latest
environment:
name: Chromatic Production
url: ${{ steps.publish_chromatic.outputs.url }}
env:
NODE_OPTIONS: --max-old-space-size=4096
CHROMATIC_RETRIES: 5
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Update Corepack
run: npm i -g corepack@latest
- name: Enable Corepack (pre)
run: corepack enable
- name: Prepare pnpm (pre)
run: corepack prepare [email protected] --activate
- uses: actions/cache@v4
name: Download storybook cache
with:
path: |
**/node_modules/.cache
key: ${{ runner.os }}-storybook-${{ github.run_id }}
restore-keys: |
${{ runner.os }}-storybook
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'
cache: 'pnpm'
- name: Enable Corepack
run: corepack enable
- name: Prepare pnpm
run: corepack prepare [email protected] --activate
- name: Install dependencies
run: pnpm install
- name: Publish to Chromatic
id: publish_chromatic
uses: chromaui/action@v11
with:
exitZeroOnChanges: true
exitOnceUploaded: true
autoAcceptChanges: true
onlyChanged: true
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}