name: Release Please on: push: branches: - master permissions: contents: read jobs: release-please: runs-on: ubuntu-latest if: github.repository == 'poolifier/poolifier' 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 }} publish-documentation: needs: [publish-npm, publish-jsr] 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 cache: 'pnpm' - name: Generate documentation run: | pnpm install --ignore-scripts --frozen-lockfile pnpm typedoc - name: Commit files if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}' env: COMMIT_MESSAGE: 'docs: publish documentation' COMMIT_AUTHOR: Documentation Bot COMMIT_EMAIL: documentation-bot@users.noreply.github.com run: | git config --local user.name "${{ env.COMMIT_AUTHOR }}" git config --local user.email "${{ env.COMMIT_EMAIL }}" git pull git add ./docs git commit -a -m "${{ env.COMMIT_MESSAGE }}" - name: Push changes if: github.ref == 'refs/heads/${{ github.event.repository.default_branch }}' uses: CasperWA/push-protected@v2 with: token: ${{ secrets.GH_TOKEN_PROTECTED }} branch: ${{ github.event.repository.default_branch }}