/ .github / workflows / release.yml
release.yml
 1  name: 🚀 Release
 2  
 3  on:
 4    push:
 5      branches:
 6        - main
 7    workflow_dispatch:
 8  
 9  concurrency: ${{ github.workflow }}-${{ github.ref }}
10  
11  env:
12    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
13    NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
14  
15  jobs:
16    release:
17      name: 🚀 Release
18      strategy:
19        matrix:
20          os: [ubuntu-latest]
21          node-version: [lts/*]
22          pnpm-version: [latest]
23      runs-on: ${{ matrix.os }}
24      steps:
25        - name: ⬇️ Checkout
26          id: checkout
27          uses: actions/checkout@v2.3.3
28          with:
29            token: ${{ env.GITHUB_TOKEN }}
30            fetch-depth: 0
31  
32        - name: 🟢 Setup node
33          id: setup-node
34          uses: actions/setup-node@v2
35          with:
36            node-version: ${{ matrix.node-version }}
37  
38        - name: 🥡 Setup pnpm
39          id: setup-pnpm
40          uses: pnpm/action-setup@v2.1.0
41          with:
42            version: ${{ matrix.pnpm-version }}
43            run_install: false
44  
45        - name: 🎈 Get pnpm store directory
46          id: get-pnpm-cache-dir
47          run: |
48            echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
49  
50        - name: 🔆 Cache pnpm modules
51          uses: actions/cache@v3
52          id: pnpm-cache
53          with:
54            path: ${{ steps.get-pnpm-cache-dir.outputs.pnpm_cache_dir }}
55            key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
56            restore-keys: |
57              ${{ runner.os }}-pnpm-store-
58  
59        - name: 🧩 Install Dependencies
60          id: install-dependencies
61          run: pnpm install
62  
63        - name: 🏗️ Build
64          id: build-all
65          run: |
66            pnpm build
67  
68        - name: 📣 Create Release Pull Request or Publish to npm
69          id: changesets
70          uses: changesets/action@v1
71          with:
72            title: "chore(release): version packages 🦋"
73            publish: pnpm publish:packages
74            version: pnpm version:packages
75            commit: "chore(release): version packages 🦋 [skip ci]"
76          env:
77            GITHUB_TOKEN: ${{ env.GITHUB_TOKEN }}
78            NPM_TOKEN: ${{ env.NPM_TOKEN }}