initial release#1
Conversation
|
You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool. What Enabling Code Scanning Means:
For more information about GitHub Code Scanning, check out the documentation. |
There was a problem hiding this comment.
Pull request overview
This PR delivers the initial ReleaseGen v2 codebase: a changelog-driven release automation tool (Go CLI + Docker image) that discovers per-module CHANGELOG.md files, determines the next SemVer, rewrites changelogs, commits/tags, and publishes matching GitHub Releases, with CI workflows and supporting docs.
Changes:
- Adds the core ReleaseGen implementation (config parsing/validation, changelog parsing/classification/rewriting, repo discovery, git operations, GitHub release publication, runner orchestration).
- Adds CI/release workflows (tests, lint, CodeQL, coverage gating, changelog enforcement) plus Docker build.
- Adds foundational project docs (README, PRD, architecture), license, and community files.
Reviewed changes
Copilot reviewed 50 out of 55 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Full project overview, usage, workflow example, and FAQ. |
| LICENSE.md | Adds MIT license text. |
| CHANGELOG.md | Seeds Keep a Changelog formatted changelog with initial unreleased entry. |
| go.mod | Defines module + dependencies for ReleaseGen. |
| go.sum | Locks dependency checksums. |
| .testcoverage.yml | Coverage gate configuration for go-test-coverage. |
| .prenup.yaml | Local/dev task runner configuration (tests, lint, changelog check). |
| deployments/Dockerfile | Multi-stage build for static ReleaseGen binary + alpine runtime image. |
| docs/PRD.md | Product requirements document defining behavior/contract. |
| docs/ARCHITECTURE.md | Maps PRD sections to packages and explains repo layout. |
| CODE_OF_CONDUCT.md | Contributor Covenant code of conduct. |
| cmd/releasegen/main.go | CLI entrypoint: env/flag parsing, wiring, exit-code mapping, self-release stdout behavior. |
| cmd/releasegen/main_test.go | Tests flag overrides and exit-code mapping behavior. |
| internal/config/bump.go | Defines bump enum + parsing for bump types. |
| internal/config/config.go | Env parsing + validation for runtime configuration. |
| internal/config/config_test.go | Tests config parsing and validation helpers. |
| internal/changelog/errors.go | Defines changelog-specific sentinel errors. |
| internal/changelog/parser.go | Extracts unreleased section and current version from changelog text. |
| internal/changelog/parser_test.go | Tests/fuzzes changelog parsing logic. |
| internal/changelog/classifier.go | Classifies unreleased section into SemVer bump type (incl. custom types). |
| internal/changelog/classifier_test.go | Tests bump classification and version increment behavior. |
| internal/changelog/rewriter.go | Rewrites changelog by promoting [Unreleased] into a linked, dated release section. |
| internal/changelog/rewriter_test.go | Tests rewrite output and release URL/name helpers. |
| internal/changelog/update.go | End-to-end pure update pipeline (extract → classify → bump/override → rewrite). |
| internal/changelog/update_test.go | Tests update pipeline including manual override behavior. |
| internal/discovery/discovery.go | Finds candidate changelogs to release (excludes, per-module latest tag, modified-since-tag check). |
| internal/discovery/discovery_test.go | Tests discovery behavior and error propagation. |
| internal/forge/forge.go | Defines releaser interface + sentinel error. |
| internal/forge/github.go | GitHub implementation of release publishing via go-github. |
| internal/forge/github_test.go | Tests GitHub releaser against httptest server. |
| internal/forge/mocks/mocks.go | Mockery-generated forge.Releaser mock. |
| internal/logging/logging.go | Slog handler + group markers with GitHub Actions formatting. |
| internal/logging/logging_test.go | Tests logging output formats, levels, and CI detection. |
| internal/runner/runner.go | Orchestrates discovery → changelog update → commit/tag/push → GitHub release + summary file. |
| internal/runner/runner_test.go | Tests runner outcomes (happy path, skip, dry-run, failures, summary file, self-release tracking). |
| internal/vcs/vcs.go | Defines VCS abstraction + options structs and sentinel error. |
| internal/vcs/git.go | go-git implementation for discovery, tag reachability, modified-since-tag, commit/tag/push, token scrubbing. |
| internal/vcs/git_test.go | Integration tests for GitRepo + helper selection logic. |
| internal/vcs/extract_module_name_internal_test.go | Tests module name extraction from tag names. |
| internal/vcs/scrub_internal_test.go | Tests token scrubbing from error messages. |
| internal/vcs/mocks/mocks.go | Mockery-generated vcs.Repo mock. |
| .github/workflows/releasegen.yml | Release workflow: build+run ReleaseGen and (if self-released) build/push Docker image. |
| .github/workflows/ci.yml | PR test workflow. |
| .github/workflows/golangci-lint.yml | PR lint workflow with per-module matrix. |
| .github/workflows/go-test-coverage.yml | PR coverage workflow using go-test-coverage. |
| .github/workflows/ensure_changelog.yml | PR changelog enforcement workflow. |
| .github/workflows/codeql.yml | CodeQL advanced scanning workflow. |
| .github/workflows/scripts/changelog.sh | Script enforcing directory-level changelog updates. |
| .github/ISSUE_TEMPLATE/bug_report.md | Bug report template. |
| .github/ISSUE_TEMPLATE/feature_request.md | Feature request template. |
| .github/ISSUE_TEMPLATE/custom.md | Custom issue template stub. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.