name: Release Please on: push: branches: - master permissions: contents: read jobs: release-please: runs-on: ubuntu-latest permissions: contents: write pull-requests: write outputs: release_created: ${{ steps.release.outputs.release_created }} steps: - uses: googleapis/release-please-action@v4 id: release with: token: ${{ secrets.WORKFLOW_TOKEN }} config-file: .github/release-please/config.json manifest-file: .github/release-please/manifest.json build-release: needs: release-please runs-on: ubuntu-latest if: needs.release-please.outputs.release_created steps: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20.x cache: 'pnpm' - name: Install Dependencies run: pnpm install --ignore-scripts --frozen-lockfile - name: Tests & Coverage run: | pnpm test pnpm coverage - name: Lint run: pnpm lint - name: Production Build run: pnpm build:prod publish-jsr: needs: build-release runs-on: ubuntu-latest permissions: contents: read id-token: write steps: - name: Checkout uses: actions/checkout@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20.x - name: Read package.json version id: package-version uses: jaywcjlove/github-action-package@main - name: Publish Release if: ${{ contains(steps.package-version.outputs.version, '-') == false }} run: npx jsr publish --allow-dirty publish-npm: needs: build-release runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v4 with: node-version: 20.x registry-url: https://registry.npmjs.org/ cache: 'pnpm' - name: Install Dependencies run: pnpm install --ignore-scripts --frozen-lockfile - name: Read package.json version id: package-version uses: jaywcjlove/github-action-package@main - name: Publish Release if: ${{ contains(steps.package-version.outputs.version, '-') == false }} run: pnpm publish --no-git-checks env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish Pre-Release if: ${{ contains(steps.package-version.outputs.version, '-') == true && contains(steps.package-version.outputs.version, '-beta') == false }} run: pnpm publish --no-git-checks --tag next env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - name: Publish Beta Release if: ${{ contains(steps.package-version.outputs.version, '-beta') == true }} run: pnpm publish --no-git-checks --tag beta env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}