Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF Scorecard
Scanned Files
|
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a new git-cliff configuration file and a manual release workflow as an alternative to the existing release-plz automated release system. The changes enable the team to prepare releases using git-cliff for changelog generation and manual version bumping.
- Added cliff.toml configuration file with git-cliff settings for changelog generation
- Created a new GitHub Actions workflow for manual release preparation without release-plz
- Workflow includes smart fast-path tagging for metadata-only changes and semver-based version bumping
Reviewed Changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.
| File | Description |
|---|---|
| cliff.toml | Adds git-cliff configuration with commit parsers, preprocessors, and changelog template compatible with the existing release-plz setup |
| .github/workflows/prepare_release_without_release_plz.yaml | Implements a manual release preparation workflow with automatic version detection, changelog generation, and PR creation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| body = """ | ||
|
|
||
| ## [{{ version }}]\ |
There was a problem hiding this comment.
The timestamp format differs from release-plz.toml which uses {{ timestamp | date(format=\"%Y-%m-%d\") }} (line 73 in release-plz.toml). This inconsistency could lead to different timestamp formats in changelogs. Consider using the same format for consistency.
| {%- if release_link -%}\ | ||
| ({{ release_link }})\ | ||
| {% endif %} \ | ||
| - {{ timestamp }} |
There was a problem hiding this comment.
The timestamp format differs from release-plz.toml which uses {{ timestamp | date(format=\"%Y-%m-%d\") }} (line 73 in release-plz.toml). This inconsistency could lead to different timestamp formats in changelogs. Consider using the same format for consistency.
| - {{ timestamp }} | |
| - {{ timestamp | date(format="%Y-%m-%d") }} |
| - {{ statistics.commit_count }} commit(s) contributed to the release. | ||
| - {{ statistics.commits_timespan | default(value=0) }} day(s) passed between the first and last commit. | ||
| - {{ statistics.conventional_commit_count }} commit(s) parsed as conventional. | ||
| - {{ statistics.links | length }} linked issue(s) detected in commits. | ||
| {%- if statistics.links | length > 0 %} | ||
| {%- for link in statistics.links %} | ||
| {{ " " }}- [{{ link.text }}]({{ link.href }}) (referenced {{ link.count }} time(s)) | ||
| {%- endfor %} | ||
| {%- endif %} | ||
| {%- if statistics.days_passed_since_last_release %} | ||
| - {{ statistics.days_passed_since_last_release }} day(s) passed between releases. | ||
| {%- endif %} |
There was a problem hiding this comment.
The git-cliff template includes statistics (lines 71-82) that are not present in the release-plz.toml template (lines 67-100). This will cause changelogs generated by git-cliff to have a different format than those generated by release-plz, which could be confusing for users. Consider removing these statistics or adding them to release-plz.toml for consistency.
| - {{ statistics.commit_count }} commit(s) contributed to the release. | |
| - {{ statistics.commits_timespan | default(value=0) }} day(s) passed between the first and last commit. | |
| - {{ statistics.conventional_commit_count }} commit(s) parsed as conventional. | |
| - {{ statistics.links | length }} linked issue(s) detected in commits. | |
| {%- if statistics.links | length > 0 %} | |
| {%- for link in statistics.links %} | |
| {{ " " }}- [{{ link.text }}]({{ link.href }}) (referenced {{ link.count }} time(s)) | |
| {%- endfor %} | |
| {%- endif %} | |
| {%- if statistics.days_passed_since_last_release %} | |
| - {{ statistics.days_passed_since_last_release }} day(s) passed between releases. | |
| {%- endif %} |
| mapfile -t crates < <(git ls-files '**/Cargo.toml' ':!target/**' ':!.github/**') | ||
| for cargo_toml in "${crates[@]}"; do | ||
| dir="$(dirname "${cargo_toml}")" | ||
| ( cd "${dir}" && git-cliff "${since_flag[@]}" --output CHANGELOG.md ) |
There was a problem hiding this comment.
The git-cliff command runs without specifying a configuration file, so it will use the default cliff.toml. However, if git-cliff is run from a subdirectory, it may not find the cliff.toml in the repository root. Consider adding --config ../../cliff.toml or similar path resolution to ensure the configuration is found.
| ( cd "${dir}" && git-cliff "${since_flag[@]}" --output CHANGELOG.md ) | |
| ( cd "${dir}" && git-cliff "${since_flag[@]}" --config "$(git rev-parse --show-toplevel)/cliff.toml" --output CHANGELOG.md ) |
| done | ||
|
|
||
| git-cliff "${since_flag[@]}" --output CHANGELOG_PR.md | ||
| git add CHANGELOG_PR.md |
There was a problem hiding this comment.
The workflow generates CHANGELOG_PR.md for the PR body but doesn't clean up this file after the PR is created. Consider adding a cleanup step or documenting whether this file should be committed or is temporary.
| git add CHANGELOG_PR.md | |
| # Do not add CHANGELOG_PR.md to the commit; it is only used for the PR body |
We've loved release-plz, but it doesn't work very well with multiple crates due to how cargo has rate limits on publishing and there are some crates in this we don't want to release.
This PR attempts to reproduce some of release-plz's functionality (check for changes since last tag, make PR with a new release, create tag on main if version has been bumped and there are no other changes)