Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 3 additions & 22 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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<major>.<minor>.<patch> (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
Expand Down
28 changes: 28 additions & 0 deletions .github/workflows/releaser-pleaser.yml
Original file line number Diff line number Diff line change
@@ -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
7 changes: 1 addition & 6 deletions .goreleaser.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,4 @@ snapshot:
version_template: "{{ .Tag }}-next"

changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
- "^chore:"
disable: true
17 changes: 15 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,26 @@ 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 automate releases.

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

Expand Down
2 changes: 1 addition & 1 deletion cmd/qcloud/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
Loading