Files
releaser/docs/content/configuration.md
T
k3nny a14c3f1181
ci / vet, staticcheck, test, build (push) Successful in 3m2s
docs / Build and deploy docs (push) Failing after 13s
release / Build and publish release (push) Successful in 4m29s
feat(pyproject): release v1.7.0 — Python pyproject.toml version bump
Add internal/pyproject package with ReadVersion and WriteVersion for
pyproject.toml files. Reads [project].version (PEP 621) first, then
falls back to [tool.poetry].version. Section boundaries are detected
via TOML's rule that headers always start at the beginning of a line
(\n[ pattern), so inline arrays with [ characters don't interfere.

Config follows the established multi-value pattern:
- python.pyproject_toml: single path (opt-in, no default)
- python.pyproject_tomls: list for monorepos (overrides single)
- --pyproject flag overrides pyproject_toml and clears pyproject_tomls

100% per-package statement coverage maintained across all 14 packages;
FuzzReadVersion and FuzzWriteVersion added per fuzzing guidelines.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-12 00:22:49 +02:00

180 lines
5.5 KiB
Markdown

---
title: Configuration
weight: 30
---
`releaser` reads `.releaser.yml` from the repository root. All fields are optional — missing values fall back to the defaults shown below. Run `releaser --init` to scaffold the file with annotations.
## Full reference
```yaml
git:
tag_prefix: "" # default: no prefix; "v" for v1.2.3 style
branch_pattern: "^(?:.*/)?release/(\\d+)\\.(\\d+)$" # two capture groups: major, minor
commit_message: "chore(release): {version} [skip ci]"
author_name: "" # defaults to git config user.name
author_email: "" # defaults to git config user.email
# Limit which commit types trigger a release (default: all three).
releasable_types:
- fix
- feat
- breaking
# Control which version component each commit type bumps.
# Valid values: "patch" (default) or "minor".
bump_rules:
breaking: "patch"
feat: "patch"
fix: "patch"
maven:
pom_path: "pom.xml" # single pom.xml, relative to repo root
# Multi-module: list overrides pom_path.
# pom_paths:
# - "pom.xml"
# - "module-a/pom.xml"
# - "module-b/pom.xml"
node: # opt-in — omit section to skip
# package_json: "package.json" # single path
# Monorepo: list overrides package_json.
# package_jsons:
# - "packages/frontend/package.json"
# - "packages/backend/package.json"
gradle: # opt-in — omit section to skip
# build_file: "build.gradle" # Groovy or Kotlin DSL; single path
# Multi-module: list overrides build_file.
# build_files:
# - "build.gradle"
# - "module-a/build.gradle"
python: # opt-in — omit section to skip
# pyproject_toml: "pyproject.toml" # PEP 621 [project].version or [tool.poetry].version
# Monorepo: list overrides pyproject_toml.
# pyproject_tomls:
# - "pyproject.toml"
# - "packages/cli/pyproject.toml"
gitlab:
url: "https://gitlab.example.com" # or env CI_SERVER_URL
token: "" # prefer env GITLAB_TOKEN
project: "" # prefer env CI_PROJECT_ID or CI_PROJECT_PATH
github:
token: "" # prefer env GITHUB_TOKEN
repo: "" # "owner/repo" format
```
{{< hint info >}}
When both `github.*` and `gitlab.*` are configured, GitHub takes precedence.
{{< /hint >}}
## Environment variables
| Variable | Used for |
|----------|----------|
| `GITLAB_TOKEN` | GitLab API auth + HTTPS push auth |
| `CI_SERVER_URL` | GitLab instance URL |
| `CI_PROJECT_ID` | GitLab project identifier (numeric) |
| `CI_PROJECT_PATH` | GitLab project identifier (fallback) |
| `GITHUB_TOKEN` | GitHub API auth |
## Config sources
Run `releaser --verbose --dry-run` to see every config key, its resolved value, and where it came from (`default` / `config file` / `env: VARNAME` / `flag: --name`).
## `git.releasable_types`
By default `fix`, `feat`, and `breaking` commits all trigger a release. Use `releasable_types` to restrict this — for example, on a maintenance branch where you want only bug fixes to release:
```yaml
git:
releasable_types:
- fix
```
## `git.bump_rules`
By default every releasable commit bumps the **patch** component. The `bump_rules` map lets you promote specific types to bump **minor** instead. This is useful on a branch that manages its own minor versioning:
```yaml
git:
bump_rules:
feat: "minor" # feat: commits bump minor, not patch
breaking: "minor" # breaking changes bump minor too
fix: "patch" # fix: stays patch (this is the default)
```
## Multi-module Maven
`pom_paths` accepts a list and overrides `pom_path`. All listed files are updated and committed in the same release commit:
```yaml
maven:
pom_paths:
- "pom.xml"
- "module-a/pom.xml"
- "module-b/pom.xml"
```
The `--pom` CLI flag sets a single path and clears `pom_paths`.
## Node.js support
The `node` section is opt-in — if omitted, no `package.json` is touched. Use `package_jsons` for monorepos:
```yaml
node:
package_jsons:
- "packages/frontend/package.json"
- "packages/backend/package.json"
```
## Python support
The `python` section is opt-in — if omitted, no `pyproject.toml` is touched. `releaser` reads `[project].version` (PEP 621) first; if not found it falls back to `[tool.poetry].version`. The original file formatting is preserved on write.
```yaml
python:
pyproject_toml: "pyproject.toml"
```
Use `pyproject_tomls` for monorepos:
```yaml
python:
pyproject_tomls:
- "pyproject.toml"
- "packages/cli/pyproject.toml"
- "packages/lib/pyproject.toml"
```
The `--pyproject <path>` CLI flag sets a single path and clears `pyproject_tomls`.
## Gradle support
The `gradle` section is opt-in — if omitted, no build file is touched. Both Groovy DSL (`version = '1.2.3'`) and Kotlin DSL (`version = "1.2.3"`) are supported; the original quote style is preserved on write.
```yaml
gradle:
build_file: "build.gradle"
```
Use `build_files` for multi-module projects:
```yaml
gradle:
build_files:
- "build.gradle"
- "module-a/build.gradle"
- "module-b/build.gradle"
```
The `--gradle <path>` CLI flag sets a single build file path and clears `build_files`.