Skip to content

ci(release): migrate from GoReleaser to semantic-release with automated multi-platform releases#32

Closed
M-logique wants to merge 1 commit into
MatinSenPai:mainfrom
M-logique:main
Closed

ci(release): migrate from GoReleaser to semantic-release with automated multi-platform releases#32
M-logique wants to merge 1 commit into
MatinSenPai:mainfrom
M-logique:main

Conversation

@M-logique
Copy link
Copy Markdown
Contributor

This PR replaces the previous GoReleaser-based CD pipeline with a new release workflow powered by semantic-release.

Features

Automated semantic versioning

  • Versions are automatically calculated based on the Conventional Commits specification

  • Supports automatic:

    • major
    • minor
    • patch
      releases

Compatibility with existing tags

  • Fully compatible with previously created Git tags
  • Existing repository tags are used as the initial version source
  • Version calculation continues seamlessly from older releases without resetting version history

Automatic changelog generation

  • Changelog is generated automatically from commit history

Multi-platform binary builds

  • GitHub Actions matrix strategy now builds 9 binaries automatically

Automated GitHub releases

  • Releases are automatically published after successful builds
  • Binary artifacts are uploaded automatically
  • Release notes are generated using release templates

Tested example release:

https://github.com/M-logique/SenPaiScanner/releases/tag/v0.3.0

Pre-release support for dev branch

  • The dev branch now publishes prereleases automatically

Makefile updates

Added additional build targets for:

  • linux arm
  • linux 386
  • windows 386

Additional notes

This migration significantly simplifies release management and reduces manual release overhead while improving consistency across builds and changelogs.

image

@M-logique
Copy link
Copy Markdown
Contributor Author

Please note that GitHub release notes can always be edited after a release is published.

If you do not like the current template, you can either:

  • edit the generated release notes manually after publishing
  • or modify release-template.md to match your preferred format/style

The main goals of these changes were:

  • automatic semantic version calculation using Conventional Commits
  • faster multi-platform builds using GitHub Actions matrix strategy
  • automatic changelog generation for each release
  • reducing manual release management overhead

chore: remove obsolete goreleaser configuration file

fix(build): correct syntax error in build command for artifact naming

feat(build): add target for building Linux ARM architecture

fix(build): update artifact path for build output in CI workflow

chore(release): 0.3.0

* **build:** add target for building Linux ARM architecture ([e8e9175](e8e9175))

* **build:** correct syntax error in build command for artifact naming ([3e1df10](3e1df10))
* **build:** update artifact path for build output in CI workflow ([4ae289b](4ae289b))

fix(release): correct binary download links in release template

chore: remove obsolete CHANGELOG.md file

fix(build): correct output filename for Linux 386 architecture

feat: implement CI/CD workflows for building and releasing the project
@MatinSenPai
Copy link
Copy Markdown
Owner

متشکرم از تمام زحماتت. متأسفانه به علت دور شدن پروژه از هدف اصلیش،‌ تغییراتی اعمال کردم در جهت سادگی بیشتر و تمام PRها رو مجبورم ببندم. شرایط contribute رو می‌نویسم، منتها سعی بر سادگی، پیدا کردن آیپی تمیز و پرفرمنس خوبه❤️

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.

2 participants