Release preparation
This diagram focuses on the process of preparing for a FOLIO release by creating a dedicated release branch and configuration. In the FOLIO Eureka CI/CD ecosystem, release preparation is the step that bridges continuous development and an upcoming named release. Its purpose is to isolate release-candidate changes from ongoing “snapshot” development and to set up everything needed to eventually build official release artifacts. This is typically done at the start of a release cycle (for example, when the team is ready to freeze features for the R1 2025 release). The diagram shows how a new branch is created and how the system orchestrates module versions for the release. It fits into the CI/CD pipeline as a one-time (per release) setup flow that ensures subsequent release builds are consistent and that a stable set of module versions is identified.
Parameter Setup & Job Trigger
DevOps (Kitfox) initiates the procedure by setting core parameters (e.g., previous release version, new release version, and any new applications to include).
These parameters feed into a CI job, orchestrating the release‑preparation workflow.
Platform Repository Preparation
The CI framework checks out the platform‑lsp repository from the previous release branch.
A new release branch (e.g., Rx-202y) is created to isolate upcoming changes from ongoing development.
The process reads the platform-descriptor.json and platform-template.json files to understand which modules/applications are part of the platform.
The platform descriptor file must be deleted. It will be recreated during the release update CI flow.
The platform update configuration file (located in the default branch) must be updated with the new release branch reference.
New Applications Merge
If any new applications were specified in the job parameters, the CI job automatically updates the applications section within platform-template.json.
This ensures the new release branch references the correct set of applications and modules.
Per‑Application Branching & Configuration
For each application in the updated list, the job:
Clones the repository (based on the specified or previous release branch).
Create a new release branch to capture all release‑specific changes.
Updates the pom.xml, application template files, and deletes the application state file. The application state file must be deleted. It will be recreated during the release update CI flow.
The template file must include a placeholder restraint (e.g., ^VERSION) instead of the
latestor previous release value. It helps ensure the new release module version is determined correctly.Commits and pushes these changes to the new release branch.
The placeholder restraint (^VERSION) needs to be changed to the real module version limitation, for instance, to ">1.0.0 <=2.5.0" or “^2.0.0”. It will help to update several release module versions simultaneously and not overlap them.
The application update configuration file (located in the default branch) must be updated with the new release branch reference.
Platform Template Update
In parallel, the pipeline updates the platform template file to reference the new release branches and their major versions restraint (e.g., ^2.0.0).
These template changes are committed and pushed, aligning the platform’s master list of modules with the newly created branches.
Handoff to the Development Team
With each application branch set up and placeholders in place, the Development Team can now finalize module version restraint (^VERSION → actual version restraint).
This handoff ensures developers have a consistent, ready‑to‑configure branch for every module in the platform.
Key Benefits & Rationale
Automation & Consistency: By automating branch creation and version placeholders, the process ensures that every new application follows the same release workflow, reducing manual errors.
Modular Approach: Treating each application individually (cloning, branching, versioning) allows teams to manage changes at the module level while still tracking them in a central platform descriptor.
Streamlined Handoff: Developers only need to focus on final versioning in their respective modules, as the initial branching and file setup are handled automatically.
Overall, this flow provides a structured, repeatable mechanism for transitioning from ongoing development (master or snapshot) to a well‑defined release branch—ready for final version assignment, testing, and subsequent deployment.