From 1190b2030cccbda7a2ba6ca6339e9a9dd200f8c4 Mon Sep 17 00:00:00 2001 From: dhernando Date: Fri, 13 Mar 2026 12:20:23 +0100 Subject: [PATCH 1/3] add releaser pleaser --- .github/workflows/releaser-pleaser.yml | 28 ++++++++++++++++++++++++++ .goreleaser.yaml | 7 +------ CONTRIBUTING.md | 9 +++++++-- cmd/qcloud/main.go | 2 +- 4 files changed, 37 insertions(+), 9 deletions(-) create mode 100644 .github/workflows/releaser-pleaser.yml diff --git a/.github/workflows/releaser-pleaser.yml b/.github/workflows/releaser-pleaser.yml new file mode 100644 index 0000000..e383c6d --- /dev/null +++ b/.github/workflows/releaser-pleaser.yml @@ -0,0 +1,28 @@ +name: releaser-pleaser + +on: + push: + branches: [main] + pull_request_target: + types: + - edited + - labeled + - unlabeled + +concurrency: + group: releaser-pleaser + cancel-in-progress: true + +jobs: + releaser-pleaser: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: releaser-pleaser + uses: apricote/releaser-pleaser@v0.8.0 + with: + token: ${{ secrets.RELEASER_PLEASER_TOKEN }} + extra-files: | + cmd/qcloud/main.go diff --git a/.goreleaser.yaml b/.goreleaser.yaml index bf3b9f4..8215640 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -38,9 +38,4 @@ snapshot: version_template: "{{ .Tag }}-next" changelog: - sort: asc - filters: - exclude: - - "^docs:" - - "^test:" - - "^chore:" + disable: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 157bb3a..c8e62c6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,13 +24,18 @@ make test ## Building -The cli binary is build in the `./build` directory, this is mostly for building locally. +The cli binary is built in the `./build` directory, this is mostly for building locally. ```bash make build ``` -For release for multiple platforms, goreleaser is used in CI. +## Releasing + +The project uses [releaser-pleaser](https://apricote.github.io/releaser-pleaser/introduction.html) to create new releases. + +It uses conventional commits to classify changes + ## Conventions diff --git a/cmd/qcloud/main.go b/cmd/qcloud/main.go index 662ef44..65104a2 100644 --- a/cmd/qcloud/main.go +++ b/cmd/qcloud/main.go @@ -9,7 +9,7 @@ import ( "github.com/qdrant/qcloud-cli/internal/state" ) -var version = "dev" +var version = "dev" // x-releaser-pleaser-version func main() { ctx := context.Background() From 3e145b883c61a2d21aff4c33ceeb1dacce2a5b46 Mon Sep 17 00:00:00 2001 From: dhernando Date: Mon, 16 Mar 2026 09:47:22 +0100 Subject: [PATCH 2/3] make the release.yml workflow automated based on tag push --- .github/workflows/release.yml | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e955f09..845207d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,11 +1,9 @@ name: Release on: - workflow_dispatch: - inputs: - version: - description: "Version to release (e.g. v1.2.3)" - required: true + push: + tags: + - "v*.*.*" permissions: contents: write @@ -18,23 +16,6 @@ jobs: with: fetch-depth: 0 - - name: Validate version format - run: | - if [[ ! "${{ github.event.inputs.version }}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then - echo "Error: version must match v.. (e.g. v1.2.3)" - exit 1 - fi - - - name: Configure git - run: | - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - - name: Create and push tag - run: | - git tag -a "${{ github.event.inputs.version }}" -m "Release ${{ github.event.inputs.version }}" - git push origin "${{ github.event.inputs.version }}" - - uses: jdx/mise-action@v3 with: version: 2026.3.8 From 60c05d707cafa431baebb0daa7fa263d93459bde Mon Sep 17 00:00:00 2001 From: dhernando Date: Mon, 16 Mar 2026 09:50:22 +0100 Subject: [PATCH 3/3] add little explanation on how releaser-pleaser works --- CONTRIBUTING.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c8e62c6..f17c4a6 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -32,9 +32,17 @@ make build ## Releasing -The project uses [releaser-pleaser](https://apricote.github.io/releaser-pleaser/introduction.html) to create new releases. +The project uses [releaser-pleaser](https://apricote.github.io/releaser-pleaser/introduction.html) to automate releases. -It uses conventional commits to classify changes +Releases are driven by [conventional commits](https://www.conventionalcommits.org/). Each commit merged to `main` is classified by its prefix: + +- `fix:` patches (e.g. `fix: correct cluster list pagination`) +- `feat:` minor releases (e.g. `feat: add backup commands`) +- `feat!:` or `BREAKING CHANGE:` major releases + +After merging to `main`, releaser-pleaser opens or updates a "release PR" that bumps the version and updates the changelog. Merging that PR tags the commit and triggers GoReleaser to publish the GitHub release and binaries. + +No manual tagging is needed. ## Conventions