From dfafd3bec98bf59fdeafbf510c38192f0fa493e2 Mon Sep 17 00:00:00 2001 From: Mirza Merdovic Date: Fri, 17 Apr 2026 11:10:31 +0200 Subject: [PATCH] feat: automate releases with release-please, retire manual tag workflow --- .../{release.yml => release-please.yml} | 31 +++++++++++++------ AGENTS.md | 13 ++++++++ 2 files changed, 34 insertions(+), 10 deletions(-) rename .github/workflows/{release.yml => release-please.yml} (52%) diff --git a/.github/workflows/release.yml b/.github/workflows/release-please.yml similarity index 52% rename from .github/workflows/release.yml rename to .github/workflows/release-please.yml index a2ce8d1..6b4fbf1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release-please.yml @@ -1,30 +1,38 @@ -name: Release +name: Release Please on: push: - tags: - - v* + branches: + - main permissions: - contents: read + contents: write + pull-requests: write id-token: write concurrency: - group: release-${{ github.workflow }}-${{ github.ref }} + group: release-please-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: - publish: - name: Publish package + release-please: + name: Release Please runs-on: ubuntu-24.04 timeout-minutes: 15 steps: + - uses: googleapis/release-please-action@v4 + id: release + with: + release-type: node + - name: Check out repository uses: actions/checkout@v6.0.2 + if: ${{ steps.release.outputs.release_created }} - name: Set up Node.js uses: actions/setup-node@v6.3.0 + if: ${{ steps.release.outputs.release_created }} with: node-version: 22.22.0 registry-url: https://registry.npmjs.org @@ -32,22 +40,25 @@ jobs: cache-dependency-path: package-lock.json - name: Install dependencies + if: ${{ steps.release.outputs.release_created }} run: npm ci - name: Run tests + if: ${{ steps.release.outputs.release_created }} run: npm test - name: Run lint + if: ${{ steps.release.outputs.release_created }} run: npm run lint - name: Run build + if: ${{ steps.release.outputs.release_created }} run: npm run build - - name: Set version from tag - run: npm version "${GITHUB_REF_NAME#v}" --no-git-tag-version --allow-same-version - - name: Upgrade npm for OIDC publishing support + if: ${{ steps.release.outputs.release_created }} run: npm install -g npm@latest - name: Publish package + if: ${{ steps.release.outputs.release_created }} run: npm publish --access public diff --git a/AGENTS.md b/AGENTS.md index fc9d492..4720338 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -160,3 +160,16 @@ Do not invent new workflow states if an existing event fits. - Do not work on multiple issues in the same worktree. - Do not invent new workflow states if an existing event fits. - If `AGENTS.md` and a skill disagree, ask for clarification. + +## Commit conventions + +Commits merged to `main` should follow [Conventional Commits](https://www.conventionalcommits.org/) so that release-please can determine the correct version bump automatically: + +| Prefix | Version bump | +|---|---| +| `fix:` | patch | +| `feat:` | minor | +| `feat!:`, `fix!:`, `refactor!:` | major | +| `chore:`, `docs:`, `refactor:`, `test:` | no release | + +Release Please maintains a Release PR on `main` that accumulates these changes. Merging the Release PR triggers the automated npm publish via OIDC — no manual tagging or version bumping required.