[build] clarify dependency pin and update tasks#17463
Conversation
Review Summary by QodoClarify dependency management tasks and include Python in release workflow
WalkthroughsDescription• Clarify dependency management by distinguishing pin, update, and upgrade tasks • Add Python to release workflow dependency pinning process • Separate Rust pin and update behaviors for consistency • Refactor Node.js tasks to split update and upgrade functionality • Update release workflow to use pin instead of update for lockfiles Diagramflowchart LR
A["Dependency Tasks"] --> B["Pin Task"]
A --> C["Update Task"]
A --> D["Upgrade Task"]
B --> B1["Regenerate lockfiles<br/>and checksums"]
C --> C1["Move versions within<br/>current declarations"]
C --> B
D --> D1["Change declarations<br/>to later versions"]
D --> C
E["Release Workflow"] --> F["Uses pin instead<br/>of update"]
F --> G["All language bindings<br/>including Python"]
File Changes1. rake_tasks/java.rake
|
Code Review by Qodo
1.
|
There was a problem hiding this comment.
Pull request overview
This PR clarifies the distinction between pin, update, and upgrade dependency-management tasks across language bindings, and fixes the release workflow to invoke pin (refresh lockfiles after a version bump) instead of update (which would also bump resolved dependency versions). Python's tasks are also restructured so update actually upgrades resolved versions and pin only regenerates lockfiles, and Python is added to the all: aggregates that previously omitted it.
Changes:
- Split
pinvsupdatesemantics for Rust and Python; add a separatenode:upgradeand ajava:upgradealias for ranged bumps. - Add
py:pin/py:updatetoall:pin/all:updateso Python is no longer skipped. - Switch the release "Reset Dependencies" step from
:updateto:pin(andrust:update→rust:pin).
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| Rakefile | Adds py:pin and py:update to the all: aggregate tasks. |
| rake_tasks/rust.rake | Introduces rust:pin (generate-lockfile + CARGO_BAZEL_REPIN) and broadens rust:update to update all crates, then pin. |
| rake_tasks/python.rake | Makes py:pin only refresh the lockfile and py:update actually bump deps via //scripts:update_py_deps, then pin. |
| rake_tasks/node.rake | Splits the old update[:latest] task into node:update and a new node:upgrade (uses --latest), each followed by node:pin. |
| rake_tasks/java.rake | Adds a java:upgrade alias to java:update for naming parity with other bindings. |
| .github/workflows/release.yml | Changes the post-version-bump reset step to call :pin (and rust:pin) instead of :update. |
|
Persistent review updated to latest commit dde3f25 |
|
Persistent review updated to latest commit 11c1b0f |
|
Persistent review updated to latest commit 3092715 |
|
Not merging until @cgoldberg verifies the Python pieces look right. :) |
|
Persistent review updated to latest commit 1ea3b7a |
|
Persistent review updated to latest commit 4d9383e |
|
Persistent review updated to latest commit 49a794a |
* origin/trunk: (97 commits) [py] update python dependencies (SeleniumHQ#17490) [build] fix renovate reported issues with configuration [build] remove base-ref from renovate workflows it does not work for the use case I had for them [build] add renovate dependency workflow (SeleniumHQ#17504) [build] simplify commit-changes workflow (SeleniumHQ#17503) [build] clarify dependency pin and update tasks (SeleniumHQ#17463) [build] do not rerun or attempt to upload logs unless workflow failure is from the Bazel step [build] fix renovate ignore rules_python to v2 until upstream fixed [build] renovate ignore rules_python until upstream fixed [build] bump rules_closure version (SeleniumHQ#17500) [build] bump rules_jvm_external (SeleniumHQ#17501) [js] remove npm dependency by using bazel for everything (SeleniumHQ#17499) [build] bump ruby versions to latest patch releases (SeleniumHQ#17496) [dotnet] [build] Support deterministic build output (SeleniumHQ#17497) [build] remove renovate update requests pending work done in SeleniumHQ#17427 (SeleniumHQ#17498) [dotnet] [build] Fix remote linkage in SourceLink (SeleniumHQ#17495) [rust] update reqwest to 0.13 (SeleniumHQ#17488) [build] bump low-risk Bazel module dependencies (SeleniumHQ#17494) [dotnet] run format against slnx instead of looping csproj (SeleniumHQ#17483) [build] ignore renovate.json references in renovate recommendations ... # Conflicts: # MODULE.bazel # rust/BUILD.bazel
This fixes the distinctions between the 3 functions of dependency management
pin: regenerate lockfiles, checksums, or Bazel dependency metadata from the current declarations. (Run after update or upgrade tasks, or when updating things manually, or when we put back renovate)update: move resolved dependency versions within the current declarations, then pin.upgrade: change dependency declarations to later versions. UPDATED: This is not going to be its own task, this will be managed by Renovate.It's a little confusing because
The plan is to have tasks for everything for "update" and "pin" and use Renovate as appropriate for "upgrade" notifications.
💥 What does this PR do?
🔧 Implementation Notes
🤖 AI assistance
💡 Additional Considerations
Next step is figuring out Renovate
Upcoming PR to move Python dependencies to ranges so "update" won't be a noop
🔄 Types of changes