You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by ds...@apache.org on 2026/09/27 18:46:30 UTC

(solr) 06/06: releaseWizard: pause for changelog review before RC changelog is committed/pushed

This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch branch_9_11
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 4257bb150e5e26b9ec2cea84e73e099da369d40b
Author: David Smiley <ds...@apache.org>
AuthorDate: Sun Sep 27 13:38:26 2026 -0400

    releaseWizard: pause for changelog review before RC changelog is committed/pushed
    
    RC1 of 9.11.0 staged and went to vote with an unwanted 'Important
    notes' section in Changes.html, because changelog_update_rc ran
    logchange.py prepare --commit and pushed in one automated step with
    no chance to look at the result. logchange.py prepare already
    supports a commit-less dry pass for exactly this purpose; the wizard
    just wasn't using it.
    
    Split the step in three: changelog_update_rc now runs prepare without
    --commit, leaving CHANGELOG.md and changelog/ modified but uncommitted;
    review_changelog_rc shows the diff, builds Changes.html via
    gradlew :solr:documentation:changesToHtml, and opens it (new open_cmd
    var, platform-aware like the existing rename_cmd) for a spot check;
    commit_changelog_rc then re-runs prepare --commit (a no-op on what was
    already moved/generated) and pushes.
    
    Co-Authored-By: Claude Sonnet 5 <no...@anthropic.com>
---
 dev-tools/scripts/releaseWizard.py   |  1 +
 dev-tools/scripts/releaseWizard.yaml | 63 ++++++++++++++++++++++++++++++++----
 2 files changed, 58 insertions(+), 6 deletions(-)

diff --git a/dev-tools/scripts/releaseWizard.py b/dev-tools/scripts/releaseWizard.py
index cd0c3d9597e..4dbc667648f 100755
--- a/dev-tools/scripts/releaseWizard.py
+++ b/dev-tools/scripts/releaseWizard.py
@@ -135,6 +135,7 @@ def expand_jinja(text, vars=None):
         'docker_version_to_remove': state.get_docker_version_to_remove(),
         'editor': get_editor(),
         'rename_cmd': 'ren' if is_windows() else 'mv',
+        'open_cmd': 'start' if is_windows() else ('open' if is_mac() else 'xdg-open'),
         'vote_close_72h': vote_close_72h_date().strftime("%Y-%m-%d %H:00 UTC"),
         'vote_close_72h_epoch': unix_time_millis(vote_close_72h_date()),
         'vote_close_72h_holidays': vote_close_72h_holidays(),
diff --git a/dev-tools/scripts/releaseWizard.yaml b/dev-tools/scripts/releaseWizard.yaml
index e797803a401..16779cf4e5f 100644
--- a/dev-tools/scripts/releaseWizard.yaml
+++ b/dev-tools/scripts/releaseWizard.yaml
@@ -755,26 +755,77 @@ groups:
     description: |
       This step first validates all changelogs in `changelog/unreleased/`.
       If there are any errors, they must be fixed before proceeding.
-      
+
       It then moves changelog entries into `changelog/v{{ release_version }}/` and
       regenerates `CHANGELOG.md` without a release date. The date is updated later,
       in the `publish` phase.
 
-      The result is committed to `{{ release_branch }}` only. Cherry-picking to
-      `{{ stable_branch }}` and `main` is done in `publish` phase.
+      This step is deliberately run without `--commit`, leaving the result
+      uncommitted in the working tree so it can be spot-checked in the next
+      step before anything is committed or pushed.
 
       Can be run standalone, see `dev-tools/scripts/logchange.py prepare --help`.
     depends: dependency_updates_changes
     commands: !Commands
       root_folder: '{{ git_checkout_folder }}'
-      commands_text: Prepare changelog folder and regenerate CHANGELOG.md for RC{{ rc_number }}
+      commands_text: Prepare changelog folder and regenerate CHANGELOG.md for RC{{ rc_number }} (uncommitted)
       confirm_each_command: false
       commands:
       - !Command
-        cmd: python3 -u dev-tools/scripts/logchange.py prepare --version {{ release_version }}  --release-branch {{ release_branch }} --gradle-cmd {{ gradle_cmd }} --rc-number {{ rc_number }} --commit
-        comment: Move unreleased entries to version folder and commit; then regenerate CHANGELOG.md and commit (two commits total)
+        cmd: python3 -u dev-tools/scripts/logchange.py prepare --version {{ release_version }}  --release-branch {{ release_branch }} --gradle-cmd {{ gradle_cmd }} --rc-number {{ rc_number }}
+        comment: Move unreleased entries to version folder and regenerate CHANGELOG.md, left uncommitted
         logfile: changelog-update-rc.log
         tee: true
+  - !Todo
+    id: review_changelog_rc
+    title: Spot-check the changelog for RC{{ rc_number }}
+    description: |
+      Before committing, spot-check the changelog that was just regenerated.
+      This is the last easy chance to catch mistakes -- once RC{{ rc_number }} is
+      built and staged, fixing the changelog means a new RC and restarting the vote.
+
+      Look at `git diff changelog/ CHANGELOG.md` and the rendered
+      `solr/documentation/build/site/changes/Changes.html` (opened below) for
+      things like: entries in the wrong section, an "Important notes" entry
+      that shouldn't be called out, duplicate/missing issues, and typos.
+
+      If something needs fixing, edit the relevant file(s) under
+      `changelog/v{{ release_version }}/` and re-run this step's commands.
+    depends: changelog_update_rc
+    commands: !Commands
+      root_folder: '{{ git_checkout_folder }}'
+      commands_text: Show the changelog diff and open the rendered Changes.html for review
+      confirm_each_command: false
+      commands:
+      - !Command
+        cmd: git diff --stat changelog CHANGELOG.md
+        stdout: true
+      - !Command
+        cmd: "{{ gradle_cmd }} :solr:documentation:changesToHtml"
+        logfile: changes-to-html.log
+        tee: true
+      - !Command
+        cmd: "{{ open_cmd }} solr/documentation/build/site/changes/Changes.html"
+        stdout: true
+    post_description: |
+      Once the changelog looks right, proceed to the next step to commit and push it.
+  - !Todo
+    id: commit_changelog_rc
+    title: Commit and push changelog for RC{{ rc_number }}
+    description: |
+      Commits the reviewed changelog to `{{ release_branch }}` only. Cherry-picking to
+      `{{ stable_branch }}` and `main` is done in the `publish` phase.
+    depends: review_changelog_rc
+    commands: !Commands
+      root_folder: '{{ git_checkout_folder }}'
+      commands_text: Commit the reviewed changelog and push it to {{ release_branch }}
+      confirm_each_command: false
+      commands:
+      - !Command
+        cmd: python3 -u dev-tools/scripts/logchange.py prepare --version {{ release_version }}  --release-branch {{ release_branch }} --gradle-cmd {{ gradle_cmd }} --rc-number {{ rc_number }} --commit
+        comment: Commit the (already reviewed) changelog entries and regenerated CHANGELOG.md
+        logfile: commit-changelog-update-rc.log
+        tee: true
       - !Command
         cmd: git push origin {{ release_branch }}
         comment: Push prepared changelog to {{ release_branch }}