How-To Create Application Release Branch
This page provides step-by-step instructions for running the release preparation workflows that create release branches for FOLIO Eureka applications.
Purpose
Release preparation workflows automate the creation of release branches across application repositories. There are two levels of execution:
Platform-wide release preparation — the platform repository maintainer triggers a single orchestrator workflow in
platform-lspthat processes all applications in parallel. This is the standard approach for regular release cycles (e.g., Sunflower, Tulip)Single-application release preparation — an application maintainer or the platform repository maintainer triggers the workflow directly in one application repository. This is used for adding new applications mid-release or re-creating a branch after issues
For a detailed explanation of what the automation does during release preparation, see Creating a Release Branch.
When to Use Each Mode
Scenario | Recommended Mode |
|---|---|
Regular platform release cycle (e.g., Sunflower → Tulip) | Platform-wide orchestrator |
New application being added to an existing release | Single-application |
Re-creating a branch after a failed preparation | Single-application |
Application not included in the platform but needs its own release branch | Single-application |
Testing release preparation with | Single-application |
Testing release preparation with | Platform-wide orchestrator with |
Platform-Wide Release Preparation
This section describes how to run the release-preparation-orchestrator.yml workflow in the platform-lsp repository.
Step 1: Navigate to GitHub Actions
Open the platform-lsp GitHub Actions page and select the Release preparation orchestrator workflow from the left sidebar.
Step 2: Open the Run Workflow Dialog
Click the Run workflow button on the right side of the workflow page.
Step 3: Fill Input Parameters
The dialog presents the following input parameters:
Parameter | Required | Description | Example |
|---|---|---|---|
| Yes | The source release branch that serves as the baseline for the new release. The orchestrator reads this branch's |
|
| Yes | The name of the release branch to create across all application repositories and in |
|
| No | Comma-separated list of application repositories to include that were not part of the previous release. These are processed alongside the existing applications |
|
| No | When enabled, if the |
|
| No | When enabled, uses the pre-release branch version (rather than the previous release branch version) as the base for version increment |
|
| No | Display name for the release, used in platform metadata and notifications |
|
| No | Description text for the release branch metadata | (default provided by workflow) |
| No | Whether the new release branches should require pull requests for module version updates. Almost always |
|
| No | Module version filter for the new branches: |
|
| No | Simulates the entire orchestration without making any actual changes. Useful for verifying parameters before a real run |
|
Step 4: Execute the Workflow
Click the green Run workflow button at the bottom of the dialog.
Step 5: Monitor Execution
The orchestrator runs in sequential phases. Each phase must complete before the next begins:
Authorize — verifies the identity of the user who triggered the run (see Authorization Process below)
Initial check — extracts the application list from the previous release's
platform-descriptor.jsonand merges with anynew_applicationsCheck applications — performs a dry-run validation for all applications in parallel to detect issues before making changes
Update applications — creates the release branch in each application repository (parallel execution across all applications)
Collect results — aggregates the results from all application preparations
Prepare platform template — updates
platform.template.jsonwith^VERSIONconstraints for all applicationsUpdate platform config — adds the new branch configuration to
platform-lsp'supdate-config.ymlCommit platform changes — creates the release branch in
platform-lspwith the updated templateCommit platform config — commits the config changes to the default branch
Slack notification — sends a notification announcing the new release
The entire process typically takes 10–20 minutes depending on the number of applications.
Authorization Process
The workflow verifies the identity of the user who triggered the run through a two-path process:
Path 1 — Authorized team member: If the initiator is a member of the authorized GitHub team (configured for the organization), the workflow proceeds immediately without any manual intervention.
Path 2 — Non-team member: If the initiator is not a member of the authorized team, the workflow pauses at an Environment approval gate. A yellow "Waiting" badge appears on the workflow run. The run remains paused until a member of the authorized team navigates to the workflow run in GitHub Actions and clicks Approve in the Environment approval dialog. If the run is rejected or not approved within the timeout period, the workflow terminates.
What Happens If a Single Application Fails
The orchestrator includes a pre-check phase (step 3 above) that performs a dry-run validation for all applications before making any actual changes. This catches most issues — such as missing source branches or version conflicts — before branch creation begins. Individual application failures during the actual creation phase are rare edge cases. When they do occur, the failed application is marked in the results but the orchestrator continues processing all other applications. Failed applications can be re-processed individually using the single-application workflow described below.
Single-Application Release Preparation
This section describes how to run the release-preparation.yml workflow in an individual application repository.
Step 1: Navigate to GitHub Actions
Open the GitHub Actions page for the target application repository (e.g., https://github.com/folio-org/app-acquisitions/actions) and select the Release preparation workflow from the left sidebar.
Step 2: Open the Run Workflow Dialog
Click the Run workflow button on the right side of the workflow page.
Step 3: Fill Input Parameters
Parameter | Required | Description |
|---|---|---|
| Yes | Source release branch to base the new branch on (e.g., |
| Yes | Name of the release branch to create (e.g., |
| No | Fall back to the pre-release branch if the previous release branch does not exist in this repository |
| No | Use the pre-release branch version as the base for version increment |
| No | Whether the new branch should require PRs for updates (default: |
| No | Module version filter: |
| No | Simulate without making changes |
Step 4: Execute and Monitor
Click the green Run workflow button. The workflow completes in approximately 2–5 minutes for a single application. The workflow log shows each step: source branch resolution, version increment, template update, branch creation, and config update.
Troubleshooting
Problem | Possible Cause | Resolution |
|---|---|---|
Workflow does not appear in the Actions list | Workflow file missing or disabled | Verify |
"Branch already exists" error | The target release branch already exists in the repository | Delete the existing branch first (if safe) or choose a different branch name |
Workflow paused at "Authorize" step | Initiator is not a member of the authorized team | A member of the authorized team must navigate to the workflow run and click "Approve" in the Environment approval dialog |
Version increment produces unexpected result | Fallback to pre-release branch with different version | Review the Version Increment Logic section. Consider using |
Orchestrator fails at "Check applications" | One or more applications cannot be validated | Review the failed job logs. Fix the issue in the affected repository and re-run, or exclude the application and process it separately |
Slack notification not received | Notification channel misconfigured | Check the |
Related Pages
Creating a Release Branch — what the automation does during release preparation
Releasing Applications on a Release Branch — managing the application after the branch is created
Understanding Application Repository Files — Workflow Files — detailed reference for both CI workflows