Files
releaser/ROADMAP.md
T
k3nny f0723e706a
ci / vet, staticcheck, test, build (push) Failing after 3m26s
release / Build and publish release (push) Successful in 4m28s
feat(releaser): initial release v0.4.0
Complete GitFlow release automation tool for Conventional Commits workflows:

- Core pipeline: branch parsing, tag discovery, commit analysis, version bump
- Maven pom.xml read/write, git commit/tag, HTTPS push with token auth
- GitLab release creation via API with auto-generated release notes
- Configurable via .releaser.yml (tag_prefix, branch_pattern, commit_message, pom_path, gitlab)
- CLI flags: --dry-run, --no-push, --no-commit, --tag-only, --branch, --pom, --tag-prefix, --branch-pattern
- Dockerfile (multi-stage Alpine), .releaser.gitlab-ci.yml reusable template
- Gitea CI (vet + staticcheck + test + build) and release (5-platform cross-compilation) workflows
- Taskfile with build/test/cov/lint/fuzz/ci/docker tasks
- 96% test coverage with real in-memory git repos and fuzz tests for all parsers

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

4.0 KiB

Roadmap

v0.1 — Core logic (MVP)

  • Branch name parser (release/X.Y → major, minor)
  • Git tag discovery (latest vX.Y.* tag reachable from HEAD — ancestor check, not global latest)
  • Conventional Commits parser (non-strict mode: case-insensitive, optional scope, flexible whitespace)
  • Commit range walker (last tag → HEAD, or full history on first release)
  • Version bump calculator — returns plain X.Y.Z (prefix kept separate)
  • --dry-run flag: print next version and exit
  • --branch flag: override branch detection (detached HEAD in CI)
  • Exit code 2 when no releasable commits

v0.2 — Config + Maven + local git ops

  • .releaser.yml config file (loaded from repo root, merged over defaults, missing file is not an error)
  • Configurable tag prefix (tag_prefix: "v" or tag_prefix: "" for no prefix)
  • Configurable commit message template ({version} placeholder)
  • Configurable pom_path (default pom.xml)
  • --pom CLI flag: override pom path
  • --tag-prefix CLI flag: override tag prefix
  • pom.xml version reader (ignores <parent> and dependency versions)
  • pom.xml version writer (in-place, handles -SNAPSHOT → release)
  • Git commit of pom.xml changes (author resolved from git config, overridable in .releaser.yml)
  • Git tag creation (lightweight, on the release commit)

v0.3 — GitLab integration

  • GitLab release creation via API (minimal HTTP client, no external dependency)
  • Release notes body auto-generated from commit log (grouped by Breaking Changes / Features / Bug Fixes)
  • GITLAB_TOKEN env var support
  • CI_SERVER_URL / CI_PROJECT_ID / CI_PROJECT_PATH env var support (GitLab CI native)
  • --no-push flag: commit+tag locally without pushing or creating GitLab release
  • Git push via HTTPS token auth (oauth2 + GITLAB_TOKEN)
  • GitLab section in .releaser.yml:
    gitlab:
      url: "https://gitlab.example.com"
      token: ""      # prefer env GITLAB_TOKEN
      project: ""    # prefer env CI_PROJECT_ID
    

v0.4 — Hardening & CI template

  • Configurable branch pattern (git.branch_pattern in .releaser.yml, default release/X.Y, supports regex e.g. (?:release|hotfix)/X.Y)
  • --branch-pattern CLI flag to override
  • Dirty working tree check — aborts if tracked files are modified or staged (untracked files ignored)
  • --no-commit flag: update pom.xml then stop — commit manually and re-run with --tag-only
  • --tag-only flag: skip pom.xml update, tag HEAD and push
  • Dockerfile — multi-stage build, alpine final image with ca-certificates
  • .releaser.gitlab-ci.yml — reusable CI job template with GIT_DEPTH: 0 and HTTPS push setup
  • .releaser.yml template — annotated example of every config option with defaults
  • Taskfile — build, run, test, cov, cov:text, lint, fmt, tidy, fuzz, fuzz:all, ci, clean, docker:build, docker:run
  • Gitea CI workflow (vet, staticcheck, test, build)
  • Gitea release workflow (5-platform cross-compilation, release asset upload)
  • 96% test coverage with real in-memory git repos and fuzz tests for all parsers

v0.5 — Changelog

  • CHANGELOG.md generation / append (grouped by commit type)
  • --changelog-file flag

v1.0 — Production ready

  • Integration tests against a real Git repo (with fixture commits and tags) — ✓ shipped v0.4.0 (96% coverage, real in-memory repos)
  • Cross-compilation in CI (linux/amd64, linux/arm64, darwin/amd64) — ✓ shipped v0.4.0 (Gitea release workflow, + darwin/arm64 + windows/amd64)
  • Documentation site

Future / backlog

  • GitHub release support (parity with GitLab)
  • Multi-module Maven support (multiple pom.xml paths)
  • Gradle support (build.gradle / build.gradle.kts)
  • package.json version bump support (Node.js projects)
  • Slack / Teams notification on release
  • Configurable bump rules (e.g. treat feat: as minor on main branch)