Skip to content

chore(release): release v0.2.7 #33

chore(release): release v0.2.7

chore(release): release v0.2.7 #33

Workflow file for this run

name: 🍰 Release
on:
push:
tags:
- 'v*.*.*'
- 'v*.*.*-alpha.*'
- 'v*.*.*-beta.*'
- 'v*.*.*-rc.*'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: write
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
release_type: ${{ steps.release-type.outputs.value }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
token: ${{ secrets.GH_TOKEN }}
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: 🚚 Get release type
id: release-type
run: |
if [[ ${{ github.ref_name }} =~ -(alpha|beta|rc)\. ]]; then
extracted_type="${BASH_REMATCH[1]}"
echo "value=$extracted_type" >> $GITHUB_OUTPUT
else
echo "value=stable" >> $GITHUB_OUTPUT
fi
release-npm:
needs: [prepare]
if: github.repository == 'dream-num/univer'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org
- name: 🚚 Install dependencies and build
run: |
pnpm install
pnpm build
- name: 🐙 Publish
run: |
if [[ ${{ needs.prepare.outputs.release_type }} == "alpha" ]]; then
pnpm publish --access public --tag ${{ needs.prepare.outputs.release_type }} -r --no-git-checks
else
pnpm publish --access public -r --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
release-verdaccio:
needs: [prepare]
if: github.repository == 'dream-num/univer'
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.ref_name }}
- name: Install pnpm
uses: pnpm/action-setup@v4
with:
run_install: false
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: 🚚 Install dependencies and build
run: |
pnpm install
pnpm build
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
registry-url: ${{ secrets.VERDACCIO_URL }}
scope: '@univerjs'
- name: 🐙 Publish
run: |
if [[ ${{ needs.prepare.outputs.release_type }} == "alpha" ]]; then
pnpm publish --access public --tag ${{ needs.prepare.outputs.release_type }} -r --no-git-checks
else
pnpm publish --access public -r --no-git-checks
fi
env:
NODE_AUTH_TOKEN: ${{ secrets.VERDACCIO_TOKEN }}
build-demo:
runs-on: ubuntu-latest
needs: [release-npm]
outputs:
preview-url: ${{ steps.vercel-demo.outputs.preview-url }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: ./.github/actions/setup-node
# ================= Deploy Demo =================
- name: 📦 Build demo
run: pnpm build:demo
- name: Copy demo to workspace
run: |
mkdir .workspace
cp -r ./examples/local/* .workspace
- name: 🚀 Deploy to Vercel (demo)
uses: amondnet/vercel-action@v25
id: vercel-demo
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID}}
vercel-project-id: ${{ secrets.PROJECT_ID}}
sync-cnpm:
runs-on: ubuntu-latest
needs: [release-npm]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: ./.github/actions/setup-node
- name: Install Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: 🚚 Install dependencies
run: pnpm install cnpm -g
- name: 🐙 Sync to cnpm
run: pnpm sync:cnpm
build-storybook:
runs-on: ubuntu-latest
needs: [release-npm]
outputs:
preview-url: ${{ steps.vercel-storybook.outputs.preview-url }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Node.js
uses: ./.github/actions/setup-node
# ================= Deploy Storybook =================
- name: 📦 Build storybook
run: pnpm storybook:build
- name: 🚀 Deploy to Vercel (storybook)
uses: amondnet/vercel-action@v25
id: vercel-storybook
with:
vercel-token: ${{ secrets.VERCEL_TOKEN }}
vercel-org-id: ${{ secrets.ORG_ID}}
vercel-project-id: ${{ secrets.PROJECT_ID_STORYBOOK}}
vercel-args: --prod
notify:
needs: [release-npm, release-verdaccio, build-demo, build-storybook]
runs-on: ubuntu-latest
steps:
- name: Invoke deployment hook
uses: distributhor/workflow-webhook@v3
with:
webhook_url: ${{ secrets.WEBHOOK_URL }}
data: >
{
"type": "release",
"version": "${{ github.ref_name }}",
"workflow": {
"id": "${{ github.run_id }}"
},
"preview": {
"📑 Examples": "${{ needs.build-demo.outputs.preview-url }}/",
"📚 Storybook": "${{ needs.build-storybook.outputs.preview-url }}/"
}
}