name: Node.js Package on: push: pull_request: types: [opened] # release: # types: [created] env: NODE_CACHE: 'pnpm' NODE_VERSION: '20.x' NODE_SCOPE: '@bob-the-algorithm' NPM_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} REGISTRY: ghcr.io IMAGE_NAME: ${{ github.repository }} permissions: contents: read packages: read jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: corepack enable - uses: actions/setup-node@v3 with: cache: '${{ env.NODE_CACHE }}' node-version: '${{ env.NODE_VERSION }}' registry-url: '${{ env.NODE_REGISTRY_URL }}' scope: '${{ env.NODE_SCOPE }}' - run: pnpm install - run: pnpm run test - run: pnpm run build - uses: actions/upload-artifact@v3 with: name: lib retention-days: 5 path: | packages/*/dist packages/*/package.json package.json README.md update-release-draft: if: github.ref == 'refs/heads/main' needs: build permissions: contents: write pull-requests: write packages: write runs-on: ubuntu-latest steps: - uses: release-drafter/release-drafter@v5 with: config-name: release-drafter-config.yml publish: true env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} release-docker: if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: [build, update-release-draft] permissions: contents: read packages: write steps: - name: Checkout repository uses: actions/checkout@v4 - name: Log in to the Container registry uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 with: registry: ${{ env.REGISTRY }} username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Extract metadata (tags, labels) for Docker id: meta uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 with: images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - name: Build and push Docker image uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 with: context: . file: ./docker/Dockerfile push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} release-npm: if: github.ref == 'refs/heads/main' runs-on: ubuntu-latest needs: [build, update-release-draft] permissions: contents: read packages: write steps: - uses: actions/checkout@v3 with: fetch-depth: 0 - run: corepack enable - uses: actions/setup-node@v3 with: cache: '${{ env.NODE_CACHE }}' node-version: '${{ env.NODE_VERSION }}' scope: '${{ env.NODE_SCOPE }}' - uses: actions/download-artifact@v3 with: name: lib path: ./ - run: | pnpm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN} pnpm install git config user.name "Github Actions Bot" git config user.email "<>" node scripts/set-version.ts $(git describe --tag --abbrev=0) pnpm publish -r --publish-branch main --access public --no-git-checks env: NPM_TOKEN: ${{ secrets.NPM_TOKEN }}