[build] consolidate pre-release workflow by titusfortner · Pull Request #16997 · SeleniumHQ/selenium

User description

Ruby & Rust version bumps update their lockfiles requiring re-pinning, which makes things inconsistent, this is here to help

What does this PR do?

  • Ruby & Rust version tasks no longer include calling update task
  • Neither versions nor changelogs need to be managed in separate jobs during pre-release
  • Edit: turns out changelogs does need to be in a separate job so it can use calculate-depth job, it will still run in parallel just not in the matrix
  • Explicitly calling version and update in same step for pre-release workflow
  • Adding explicit Rust handling since Rust is no longer part of all: tasks

Implementation Notes

Pre-release workflow runs the updates separately in parallel for visibility. The same functionality in one task:
./go release_updates

The pre-release workflow matrix for release-updates now includes:

  • bindings-versions: ./go all:version && ./go all:update (bindings)
  • rust-versions: ./go rust:version && ./go rust:update (Rust separately)
  • changelogs: ./go all:changelogs && ./go rust:changelogs

This ensures:

  1. Ruby's lockfile coupling is handled (version runs before update in same job)
  2. Rust is handled separately since it's excluded from all: tasks
  3. Reduced workflow complexity without creating top-level jobs
  • The separate Rust release flow (generate-rust-version -> push-rust-version -> selenium-manager) remains unchanged for Selenium Manager releases

Additional Considerations

Plan to merge this before #16987

Types of changes

  • Cleanup (formatting, renaming)

PR Type

Enhancement


Description

  • Consolidate pre-release workflow by merging separate jobs into single matrix job

  • Remove automatic update invocations from Ruby and Rust version bump tasks

  • Add explicit Rust handling in release workflow since excluded from all: tasks

  • Rename and restructure release preparation task for clarity and consistency


Diagram Walkthrough

flowchart LR
  A["Pre-release Workflow"] -->|"Consolidate"| B["Single release-updates Job"]
  B -->|"Matrix includes"| C["Browsers, DevTools, Manager"]
  B -->|"Matrix includes"| D["Multitool, Binding-versions, Rust-versions"]
  B -->|"Matrix includes"| E["Authors, Changelogs"]
  F["Ruby/Rust version tasks"] -->|"Remove auto-update"| G["Manual update invocation"]
  H["prep_release task"] -->|"Rename to"| I["release_updates task"]
Loading

File Walkthrough

Relevant files
Enhancement
ruby.rake
Remove automatic update from Ruby version task                     

rake_tasks/ruby.rake

  • Remove automatic rb:update task invocation from rb:version task
  • Version bump now only updates version file without triggering
    dependency updates
+0/-2     
rust.rake
Remove automatic update from Rust version task                     

rake_tasks/rust.rake

  • Remove automatic rust:update task invocation from rust:version task
  • Version bump now only updates Cargo.toml and BUILD.bazel without
    triggering dependency updates
+0/-2     
pre-release.yml
Consolidate workflow jobs into single matrix job                 

.github/workflows/pre-release.yml

  • Rename generate-updates job to release-updates and consolidate
    multiple separate jobs into single matrix job
  • Add binding-versions and rust-versions matrix entries that explicitly
    run version and update tasks in sequence
  • Replace release_update with update_multitool and add explicit
    changelog generation
  • Remove separate generate-versions and generate-changelogs jobs
  • Update create-pr job dependencies and patch application logic to
    reflect consolidated workflow
  • Update PR body table to show new component names and remove redundant
    entries
+18/-28 
Rakefile
Rename and restructure release preparation task                   

Rakefile

  • Rename prep_release task to release_updates for consistency with
    workflow naming
  • Update task to invoke update_multitool instead of java:update
  • Add explicit invocations of all:update and rust:update tasks to handle
    dependency updates separately
  • Update documentation comments and error messages to reflect new task
    name
+7/-5