From e5be9a156e54fb4821c209d63d5ca83c03e12710 Mon Sep 17 00:00:00 2001 From: Remco Haszing Date: Mon, 23 Sep 2024 10:21:23 +0200 Subject: [PATCH] Automate releases The `pack` job creates the npm package for every commit. The `release` job publishes the package for git tags. --- .github/workflows/ci.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4c8f7e7..c7d2bed 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,6 +17,20 @@ jobs: - run: corepack yarn - run: corepack yarn eslint . + pack: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - run: corepack yarn + - run: corepack yarn pack + - uses: actions/upload-artifact@v4 + with: + name: package + path: '*.tgz' + prettier: runs-on: ubuntu-latest steps: @@ -52,3 +66,25 @@ jobs: node-version: ${{ matrix.node }} - run: corepack yarn - run: corepack yarn vitest run --coverage ./test/unit + + release: + runs-on: ubuntu-latest + needs: + - eslint + - pack + - prettier + - tsd + - vitest + if: startsWith(github.ref, 'refs/tags/') + permissions: + id-token: write + steps: + - uses: actions/setup-node@v4 + with: + node-version: 22 + registry-url: https://registry.npmjs.org + - uses: actions/download-artifact@v4 + with: { name: package } + - run: npm publish *.tgz --provenance + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}