Skip to content

ci: automate tagged releases with GoReleaser and GitHub Actions #28

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 28, 2025

Conversation

appleboy
Copy link
Contributor

  • Add a GitHub Actions workflow to automate releases using GoReleaser when tags are pushed
  • Introduce a GoReleaser configuration file with build skipping, changelog grouping, and changelog sorting enabled

- Add a GitHub Actions workflow to automate releases using GoReleaser when tags are pushed
- Introduce a GoReleaser configuration file with build skipping, changelog grouping, and changelog sorting enabled

Signed-off-by: appleboy <[email protected]>
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Summary of Changes

Hello @appleboy, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request establishes an automated release system for the project by integrating GoReleaser with GitHub Actions. The primary objective is to enable seamless, tag-driven releases with a strong emphasis on generating well-structured and categorized changelogs, while skipping the build of binaries, which is typical for library projects.

Highlights

  • Automated Release Workflow: I've introduced a new GitHub Actions workflow designed to automate the release process. This workflow will trigger GoReleaser automatically whenever a new tag is pushed to the repository, streamlining our release pipeline.
  • GoReleaser Configuration: A new .goreleaser.yaml configuration file has been added. This file sets up GoReleaser to skip binary builds (suggesting this is a library project) and focuses on robust changelog generation.
  • Structured Changelog Generation: The GoReleaser configuration includes detailed settings for changelog generation. It's configured to use the GitHub API for changelog data, sort entries in ascending order, and group commits into predefined categories such as 'Features', 'Bug fixes', 'Enhancements', and 'Documentation updates' based on commit message patterns.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@appleboy
Copy link
Contributor Author

appleboy commented Jun 28, 2025

@gemini-code-assist summary and review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces GoReleaser to automate releases. The configuration looks like a good start, but enabling binary builds and refining the changelog grouping would improve it.

Copy link
Contributor

Summary of Changes

This pull request establishes an automated release pipeline for the project by integrating GoReleaser with GitHub Actions. The primary objective is to streamline the creation of tagged releases and their associated changelogs, laying the groundwork for more efficient version management and future binary distribution.

Highlights

  • Automated Release Workflow: Introduces a new GitHub Actions workflow to automate the release process. This workflow will trigger GoReleaser whenever a new tag is pushed, streamlining the creation of new versions.
  • GoReleaser Configuration: Adds a .goreleaser.yaml configuration file. This file defines the parameters for automated releases, including build settings and changelog generation.
  • Changelog Generation and Grouping: Configures GoReleaser to generate release changelogs using the GitHub API. It also sets up custom grouping of commit messages (e.g., Features, Bug fixes, Refactor) with specific regex patterns and sorting to create structured and readable release notes.
  • Initial Build Skipping: The .goreleaser.yaml is initially configured to skip binary builds (skip: true). This suggests a focus on automating changelog and release metadata generation, with the potential for binary artifact inclusion in future iterations.
Changelog
  • .goreleaser.yaml
    • New file added to configure GoReleaser for automated releases.
    • Sets builds.skip to true, meaning GoReleaser will not build binaries in this initial setup.
    • Configures changelog.use to github for generating release notes from GitHub's commit history.
    • Enables changelog.sort in ascending order to organize commit messages.
    • Defines custom changelog.groups with specific regex patterns and order values to categorize commits into sections like 'Features', 'Bug fixes', 'Enhancements', 'Refactor', 'Build process updates', 'Documentation updates', and 'Others' for improved readability of release notes.
Activity
  • The author, @appleboy, requested a summary and review from @gemini-code-assist.
  • @gemini-code-assist[bot] provided a high-priority review comment suggesting that binary builds should be enabled in .goreleaser.yaml for a project like mcp-proxy to provide compiled artifacts, as the current skip: true setting prevents this.
  • @gemini-code-assist[bot] also provided a medium-priority review comment recommending improvements to the changelog groups configuration, specifically suggesting more precise regex patterns, renaming the 'Enhancements' group for chore commits to 'Maintenance', and ensuring unique order values for the groups.

appleboy added 2 commits June 28, 2025 09:00
- Refine and unify changelog group regex patterns for better consistency
- Rename and reorder some changelog group titles for clarity and capitalization
- Add explicit changelog groups for "Maintenance" and improve differentiation of update types

Signed-off-by: appleboy <[email protected]>
- Enable release build by configuring build parameters for mcp-proxy binary
- Specify build targets for linux amd64 and arm64 architectures
- Remove previous skip setting to allow builds

Signed-off-by: appleboy <[email protected]>
@TBXark TBXark changed the base branch from master to dev June 28, 2025 05:33
@TBXark TBXark merged commit 725623e into TBXark:dev Jun 28, 2025
@appleboy appleboy deleted the release branch June 28, 2025 06:53
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