Runs project-ready.yml for every project in a release train
whose release branch exists and has not been released yet. It is the counterpart of
Create Release Branches, with the check inverted: that
workflow acts on projects whose branch is missing, this one on projects whose branch is there.
There is no mode. Release branches only exist in the <project>-commercial repos, and
project-ready.yml only operates on them.
| Input | Notes |
|---|---|
spring_cloud_release_train |
The train, as named by the properties file: 2026.1.0, 2026.0.0-RC1, 2025.1.4.1. |
spring_release_train |
The Spring train every project joins, e.g. 2026.1. |
- plan reads the train's properties file from
spring-cloud-release-commercial@jenkins-releaser-config(.github/scripts/release-ready-plan.js). For each project the version has-SNAPSHOTstripped and the branch isrelease/<version>. A project is planned when nov<version>tag exists in its OSS or commercial repo and the branch exists in<project>-commercial. The rest are listed under Skipped in the run summary. - ready dispatches
project-ready.ymlfor each planned project (project=<project>-commercial) and waits for it, 3 at a time. A failing child fails the run but does not stop the others. Re-running only picks up what is left.
The properties file is read as given, with no -INTERNAL-SNAPSHOT filter, so a project that
the train is not releasing is left out only because its entry names a release that is already
tagged or whose branch is gone. Check the Skipped list on an unfamiliar train.
A 4-segment train (e.g. 2025.1.4.1) lists every project, including those without a hotfix, at
the versions they have in the regular train. Those have a branch and no tag yet, but the regular
train's run marks them ready, so for a hotfix train only the 4-segment (x.y.z.h) versions are
planned. The rest are skipped as "not a hotfix version".
Each child ends by retiring its branch from config/projects.json, so the children push to
main at the same time. retire-branch-projects-json re-applies its change on the latest
main and retries when a push is rejected, as update-projects-json does.