Add pre-release support to release process #19
Reference in New Issue
Block a user
Delete Branch "add-prerelease-support"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PRE=trueoptional flag tomake releasefor creating pre-releases (e.g.,make release V=1.0.1 PRE=true)vX.X.X-prereleaseand marked as pre-release in GitHubV=1.0.0-prereleaseTest plan
make release V=abcfails validationmake release V=1.0.0-prereleasefails (tightened regex)make -n release V=1.0.1shows-f prerelease=falsemake -n release V=1.0.1 PRE=trueshows-f prerelease=trueSummary of Changes
Hello, 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 significantly enhances the project's release workflow by integrating robust support for pre-releases. It introduces a new mechanism to trigger pre-release builds via the "make release" command, ensuring that these versions are correctly tagged and identified within GitHub. This change streamlines the process for publishing development or beta versions, improving release management flexibility.
Highlights
🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.
Changelog
Ignored Files
.github/workflows/**(1)Activity
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 by creating a comment using either
/gemini <command>or@gemini-code-assist <command>. Below is a summary of the supported commands on the current page./gemini review/gemini summary/gemini helpCustomization
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 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. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.
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.
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. ↩︎
Download the plugin for this PR: discord-rich-presence.zip
Built from
479100df3con 2026-03-04T18:17:23ZPull request overview
This PR adds pre-release support to the project's release process. When triggering
make release, developers can now passPRE=trueto create a pre-release build tagged asvX.X.X-prereleaseand marked as a pre-release in GitHub. The version regex is also tightened to prevent manual suffixes in the version argument.Changes:
Makefile: Adds optionalPRE=trueflag; tightens version validation regex to reject suffixed versions; passes aprereleaseflag to the workflow dispatch command..github/workflows/create-release.yml: Adds aprereleaseboolean input, a new "Compute full version" step that appends-prereleaseto the version string when applicable, and passesprereleasetosoftprops/action-gh-release.Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
MakefilePRE=trueflag support, tightens version regex, and forwardsprereleaseflag to the GitHub Actions workflow.github/workflows/create-release.ymlprereleaseboolean input, computes the full version tag with optional-prereleasesuffix, and marks GitHub release as pre-releaseComments suppressed due to low confidence (1)
.github/workflows/create-release.yml:70
VERSIONis set to1.0.1-prerelease, and this full value is used to updatemanifest.json. This meansmanifest.jsonon themainbranch will permanently have"version": "1.0.1-prerelease"committed to it. This is likely unintended — the manifest version should reflect the base semver (1.0.1), not the pre-release tag suffix. The same issue propagates to the commit message ("Release v1.0.1-prerelease" onmain).Consider using
${{ inputs.version }}(the base version without the suffix) when updatingmanifest.jsonand forming the commit message, while using$VERSION(with the suffix) only for the git tag and the GitHub releasetag_name.💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Code Review
This pull request adds support for creating pre-releases through the
make releasecommand by introducing an optionalPRE=trueflag. The changes correctly adjust the GitHub workflow invocation to pass aprereleaseparameter and tighten the version string validation. However, a potential command injection vulnerability was identified in theMakefile'sreleasetarget due to insecure expansion of theVvariable in shell commands. It is recommended to use single quotes instead of double quotes for shell expansion ofmakevariables to prevent unintended command execution.The
releasetarget in theMakefileis vulnerable to command injection because it uses double quotes (or no quotes) when expanding theVvariable in a shell command. IfVcontains shell command substitution like$(...)or`...`, the shell will execute the command during expansion. Although there is a regex check on line 26, the command substitution happens during the evaluation of theifcondition, meaning the command executes even if the regex check fails. To remediate this, use single quotes around${V}in the shell commands to prevent the shell from performing command substitution.