Skip to content

Conversation

@panbanda
Copy link

@panbanda panbanda commented Nov 18, 2025

Summary

This PR implements automated release management using Release Please and adds comprehensive CI validation. The workflows enforce semantic versioning, automate changelog generation, and ensure code quality through multiple validation steps.

Changes

CI Workflow (.github/workflows/ci.yml)

Runs on main branch pushes and all PRs with the following jobs:

  1. Verify Dependencies - Ensures go.mod and go.sum are clean via go mod verify and go mod tidy
  2. Test Matrix (Go 1.23, 1.24, 1.25)
    • go vet ./... - Static analysis
    • go test ./... - Unit tests with coverage
    • go test -race ./... - Race condition detection
  3. Security Scan - govulncheck ./... for vulnerability detection
  4. Lint - golangci-lint for code quality

PR Validation Workflow (.github/workflows/pr-validation.yml)

Runs only on PRs:

  • Validate PR Title - Enforces Conventional Commits format (feat, fix, docs, etc.)
  • Requires subject to start with uppercase letter

Release Please Workflow (.github/workflows/release.yml)

Automates releases on main branch:

  • Creates release PRs based on conventional commits
  • Generates semantic version bumps (feat→minor, fix→patch)
  • Produces grouped changelogs (Features, Bug Fixes, Performance, etc.)

Configuration Files

  • .release-please-manifest.json - Tracks current version (starting at 0.1.0)
  • release-please-config.json - Configures changelog sections and release behavior

Removed Files

  • .github/workflows/tests.yml - Consolidated into ci.yml

Benefits

  • Automated Releases: No manual version bumping or changelog writing
  • Quality Assurance: Catches bugs, race conditions, and vulnerabilities before merge
  • Dependency Safety: Ensures go.mod/go.sum integrity
  • Semantic Versioning: Automatic version management based on commit types
  • Better History: Enforced conventional commits create searchable, meaningful history
  • No Duplication: Single CI workflow runs on both main and PRs

Testing

Workflows activate on this PR to demonstrate:

  • PR title validation (separate workflow)
  • Full test suite across Go versions
  • Security scanning
  • Linting checks
  • Dependency verification

Once merged to main, Release Please will create the first release PR automatically.

Implement automated release management using Release Please with
semantic versioning and changelog generation. Add comprehensive CI
pipeline for pull requests including dependency verification, security
scanning, and race condition detection.

Changes:
- CI workflow validates PR titles, runs tests across Go 1.23-1.25,
  performs security scans with govulncheck, and runs linting
- Release Please workflow automates version bumping, changelog
  generation, and major/minor tag management
- go vet and race detector added to catch concurrency issues
- go mod verification ensures dependency integrity

Release Please will automatically:
- Create release PRs based on conventional commits
- Generate semantic version bumps (feat=minor, fix=patch)
- Group changelog entries by type (Features, Bug Fixes, etc.)
- Update v1 and v1.x tags for easy dependency pinning
@panbanda panbanda requested a review from a team as a code owner November 18, 2025 00:32
@panbanda panbanda mentioned this pull request Nov 18, 2025
- Fix typo in setup-go action version (v5s -> v5)
- Remove redundant test run from release workflow (already validated in CI)
- Remove major/minor tag management (not used in Go ecosystem)
Keep workflow triggers consistent with main branch only
@panbanda
Copy link
Author

@alpkeskin simplified it a bit and fixed some typos after seeing the last run.

- Remove tests.yml in favor of unified ci.yml workflow
- Update ci.yml to run on both main branch pushes and PRs
- Fix Go version references: change 1.25 (unreleased) to 'stable'
- Update test matrix to use only released Go versions (1.23, 1.24)
Go 1.25 is released, restore it to the test matrix
- Move PR title validation to pr-validation.yml
- Runs only on PRs (not main branch pushes)
- CI workflow now focused on tests, linting, and security
@panbanda panbanda requested a review from alpkeskin November 18, 2025 17:40
- Remove push trigger from ci.yml (redundant after PR validation)
- Explicitly set branches: [main] on both workflows
- CI runs when PRs target main, not on main branch pushes
@tusgino
Copy link

tusgino commented Nov 19, 2025

Is this PR ready yet? @panbanda

@panbanda
Copy link
Author

@tusgino yes, I won't know if it passes until approved unfortunately. But this should work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants