Repository navigation
Conversation
Use layered Conda definitions and per-environment Conda/pip locks. Extract reusable backend and Selenium jobs so normal CI and candidate validation can use the same tests. Install locked environments through shared Conda setup actions.
Resolve fresh Conda and pip dependencies on scheduled and manual runs. Validate candidate locks with the reusable backend and Selenium workflows before proposing changed locks in a draft PR.
Describe dependency definitions, Linux and Docker generation, tested workflow artifacts, and validation before submission. Document supported-version additions, failure reproduction, and scheduled update review.
|
For reference, pandas uses scheduled lock-update PRs to keep its CI dependencies current: pandas-dev/pandas#71285 This is an example of the maintenance workflow, not an identical implementation. This PR retains Conda and uses conda-lock, and validates candidate locks with the backend and Selenium tests before creating a draft update PR. |
|
A note on the diff size: most of the added lines come from the generated conda-lock files replacing the previous Conda and PyFlink locks.
The non-lock changes include CI workflows and actions, environment definitions, the refresh script, documentation, and a RAT exclusion for generated locks. These counts do not represent entirely new logic. They also include extracting existing backend and Selenium jobs from |
Constrain grpcio below 1.80 in the two PyFlink profiles to avoid the Linux fork/exec regression tracked in grpc/grpc#43055. Regenerate their locks with grpcio 1.78.0 while preserving unrelated package selections. Verified ten actual Jupyter kernel start/execute/stop cycles per profile, FlinkStreamSqlInterpreterTest#testSetProperty on Flink 1.19 with Java 11, and FlinkStreamSqlInterpreterTest#testMultipleInsertIntoSeparately on Flink 1.20 with Java 17. Both lock input hashes match the current specifications.
What is this PR for?
Keep Linux Python CI dependency locks current and detect upstream compatibility problems without resolving dependencies on every regular CI run.
This PR retains Conda and uses conda-lock to manage Conda and PyFlink dependencies. Scheduled and manual runs resolve fresh dependencies within the supported version constraints, test the resulting locks, and propose changed locks for review only after validation passes. There is no automatic merge.
The existing test jobs are extracted into reusable workflows:
backend-tests.ymlcontains the eight backend jobs that previously ran incore.yml.selenium-integration.ymlcontains the Selenium/Spark integration job that previously ran infrontend.yml.The original workflows remain the entry points for regular CI. The default and Windows builds remain in
core.yml; npm audit and Playwright tests remain infrontend.yml.This separation lets regular CI and dependency refreshes use the same test commands, matrices, and services without maintaining duplicate test definitions. It also limits scheduled validation to the jobs that consume these locks. Regular CI installs committed locks, while refresh validation installs candidate locks without restoring cached Python environments.
The maintenance guide documents dependency updates from Linux, macOS, and Windows, including Docker
linux/amd64, validation before submission, and failure reproduction.Replaces #5584.
What type of PR is it?
Improvement
What is the Jira issue?
How should this be tested?
Run the
coreandfrontendworkflows on this branch. Confirm that the backend and Selenium jobs install the committed locks without re-solving the test dependencies and pass their existing tests.In a test fork where
Python dependency refreshexists on the default branch, manually run that workflow against this branch. Confirm that it generates candidate locks, installs them without restoring cached Python environments, and passes both backend and Selenium validation. Fork runs must not publish update PRs.Follow the local procedure in
testing/README.mdto generate and install locks. On macOS or Windows, use the documented Dockerlinux/amd64command. Confirm that generated locks remain in the host checkout, then commit them and run regular CI to test those exact locks.After merge, confirm that a successful Apache master refresh with changed locks opens or updates a draft PR. Resolution or test failures must leave the committed locks and any existing update PR unchanged.
Questions:
testing/README.md.