-
Notifications
You must be signed in to change notification settings - Fork 888
improve release workflow to detect breaking changes #5233
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
Comments
I think we should delegate the decision on what tag to make to the workflow. If we change the workflow to not run on tag, and instead run on workflow dispatch (like in v1) we can make the script decide what version to use by itself, and optionally have some controls for forcing version bumps if we really want different behavior to what the script decides. The script will decide what version bump to use (based on tags like release-breaking or whatever other metric we want) and then create the tag by itself. |
@deansheather are you simply referring to that Or are you referring to how Wrt to the latter, I think for the first step to improving this, it'd be fine if it's run manually by a user on their machine. With regard to implementation, it seems quite straightforward how we can pull this information out during release. Some initial exploration: # Compare HEAD to previous version
❯ git log --oneline HEAD...v0.13.1
81c39487 (HEAD -> main, origin/main, origin/HEAD) fix: Close tty first in `ptytest` cleanup (#5252)
ee4f0fc5 chore: enable debug logging for gotestsum (#5248)
8469dbc0 fix: add index to `provisioner_jobs.started_at` (#5245)
92c217bd fix: add index on `workspace_agents.auth_token` (#5244)
# For each hash, check associated PRs
❯ gh api -H "Accept: application/vnd.github+json" /repos/coder/coder/commits/81c39487/pulls | jq -r '.[].labels[].name'
release/test This'll most likely require a GH API key so we don't run into any rate limitations, utilizing |
It's very easy to add parameters to a workflow dispatch run so it can be run on GitHub. Check the release workflow in coder v1, it just asks for what version you want to mark and tags it for you. In this case, you would just have checkboxes for whether you want to "force" a major, minor or patch and then have the workflow determine the tag to use and create it, then build coder. |
This commit introduces three new scripts: - `release.sh` To be run by a user on their local machine to preview and create a new release (tag + push) - `check_commit_metadata.sh` For e.g. detecting breaking changes - `genereate_release_notes.sh` To display the generated release notes, used for previews and in `publish_release.sh` The `release.sh` script can be run without arguments, and it will automatically determine if we're to do a patch or minor release. A minor release can be forced via `--minor` flag. Breaking changes can be annotated either via commit/merge title prefix (`feat!:`, `feat(api)!:`), or by adding the `release/breaking` label to the PR that was merged (on GitHub). Related #5233 This work will be followed up by changes to move the tag creation from `release.sh` to CI workflows, the `release.sh` will then become a lightweight wrapper to run the workflow.
This commit introduces three new scripts: - `release.sh` To be run by a user on their local machine to preview and create a new release (tag + push) - `check_commit_metadata.sh` For e.g. detecting breaking changes - `genereate_release_notes.sh` To display the generated release notes, used for previews and in `publish_release.sh` The `release.sh` script can be run without arguments, and it will automatically determine if we're to do a patch or minor release. A minor release can be forced via `--minor` flag. Breaking changes can be annotated either via commit/merge title prefix (`feat!:`, `feat(api)!:`), or by adding the `release/breaking` label to the PR that was merged (on GitHub). Related #5233
feat!:
orfix!:
release-breaking
is automatically added to the PRrelease-breaking
Things to consider
The text was updated successfully, but these errors were encountered: