Execute Build Pipeline¶
Update the catalog_rhel.json file and execute the BuildStreaM build pipeline through GitLab. This procedure covers catalog modifications, pipeline triggering (automatic and manual), and verification of pipeline status.
Overview¶
The BuildStreaM build pipeline independently creates diskless images without deploying them. The pipeline consists of five sequential stages:
- initialization: Checks the BSM API, authenticates, and creates the pipeline job.
- parse-catalog: Uploads and validates the catalog, including its image-group identifier.
- configure-local-repository: Runs the Repository Manager workflow for the selected catalog.
- build-images: Runs the Image Build Manager workflow for the selected architectures.
- summary: Retrieves and displays the final BuildStreaM job status.
The build pipeline is automatically triggered when you update the
catalog_rhel.json file in the GitLab repository, or it can be manually
initiated through the GitLab interface. BuildStreaM identifies a catalog
revision as <catalog.identifier>-v<catalog.version>.
In catalog mode, Image Build Manager checks the project-level global image
dictionary before rebuilding each functional group. With
build_image.force_rebuild: false, a dictionary entry is reused only when its
package hash matches and its recorded kernel, initramfs, and root filesystem
objects still exist. Set force_rebuild: true to bypass this lookup.
The separate cadence pipeline uses a different root catalog and continues from build through deployment and validation. See Automate Build and Deployment with Cadence.
Warning
Do not cancel a running GitLab pipeline or stage. Cancellation prevents some pipeline steps from executing, which leaves the BuildStreaM job in an intermediate, inconsistent state.
Note
The current GitLab configuration does not serialize pipelines. Concurrent pipelines can access shared resources, so avoid overlapping operations that update the same catalog, mapping, image, or deployment state.
Note
Wait for another pipeline that uses the same catalog or image resources to finish before starting this build.
Prerequisites¶
- BuildStreaM container is deployed on the OIM node
- GitLab deployment for BuildStreaM is completed (see BuildStreaM)
- You can access the GitLab project repository
- 200 GB free disk space on the OIM / partition before triggering the build pipeline
- This requirement applies to the OIM root partition before pipeline execution
- Insufficient disk space can cause pipeline failures during image builds
- Monitor disk usage during pipeline execution, especially for multi-architecture builds
Repository content prerequisites¶
Select the RHEL 10.0 catalog that matches the workload, node architectures, and VAST requirement from:
src/main/samples/catalogs/10.0/
See Select or update the catalog for the available
Slurm, service Kubernetes, combined, and _no_vast variants. Before starting
the pipeline, configure each repository referenced by the selected catalog in
input/repo_manager/repo_manager_config.yml.
Configure the Pulp service endpoint in
input/repo_manager/repo_manager_endpoint_config.yml.
| Repository content | Prerequisite |
|---|---|
| RHEL | Use an active RHEL subscription or provide reachable baseos, appstream, and codeready-builder URLs for every selected architecture. |
| Slurm | Build and host the catalog-required Slurm RPMs and configure repositories."10.0".<architecture>.user_repos.slurm_custom.url. Package names in the repository must match the selected catalog. |
| LDMS | Build and host the catalog-required ovis-ldms RPM and configure repositories."10.0".<architecture>.user_repos.ldms.url. The supplied RHEL 10.0 catalogs reference this repository. |
| VAST | When the selected catalog references vast—the Slurm variants without the _no_vast.json suffix—host the vastnfs RPM and configure repositories."10.0".<architecture>.user_repos.vast.url. A VAST repository is not required by the _no_vast variants. |
Each custom repository must expose repodata/repomd.xml and be reachable from
the OIM. Repository Manager synchronizes and publishes these repositories; it does
not build the Slurm, LDMS, or VAST RPMs. For configuration details, see
Add an RPM Repository and Packages and
Software Requirements.
Procedure¶
Trigger Build Pipeline Automatically¶
-
Go to the GitLab project URL:
GitLab project URLhttps://<gitlab_host>:<gitlab_https_port>/root/<gitlab_project_name> -
Navigate to Code → Repository.
-
Locate the catalog file
catalog_rhel.json. -
Modify the
catalog_rhel.jsonfile to define your build requirements.Note
Ensure that the catalog file is updated with valid values. The pipeline fails if invalid details are provided.
Supported values:
- Functional group names:
slurm_control_node_rhel_10_0_x86_64,slurm_node_rhel_10_0_x86_64,slurm_node_rhel_10_0_aarch64,service_kube_control_plane_rhel_10_0_x86_64,service_kube_node_rhel_10_0_x86_64,login_node_rhel_10_0_x86_64,login_node_rhel_10_0_aarch64,login_compiler_node_rhel_10_0_x86_64,login_compiler_node_rhel_10_0_aarch64,os_rhel_10_0_x86_64,os_rhel_10_0_aarch64 - Architecture type:
x86_64andaarch64 - OS type:
RHEL - OS version:
10.0 - Package types:
rpm,rpm_repo,image,iso,tarball,pip_module,git,manifest
For another revision of the same catalog family, retain
catalog.identifierand incrementcatalog.version. New Omnia 2.3 catalogs usecatalog.schema_version: 2. - Functional group names:
-
Commit the catalog changes. The pipeline triggers automatically.
-
Monitor the pipeline progress.
Trigger Build Pipeline Manually¶
-
Navigate to Build → Pipelines.
-
Click New Pipeline.
-
In the Run new pipeline dialog box, enter the variable name as PIPELINE_TYPE and enter the value as build.
-
Click Run Pipeline to execute the build pipeline.
Monitor Build Pipeline Progress¶
-
Navigate to Build → Pipelines.
-
Click on the running pipeline to view details.
-
Monitor each stage as it progresses:
- initialization: Checks the BSM API, authenticates, and creates the job
- parse-catalog: Uploads and validates the catalog
- configure-local-repository: Configures repositories for the selected catalog
- build-images: Builds images for the selected architectures
- summary: Displays the final job status
-
Review the stage status indicators:
- Green checkmark: Stage completed successfully
- Red X: Stage failed (click for error details)
- Blue circle: Stage currently running
-
If any stage fails, review the error logs by clicking on the failed job.
Update Input Configuration Files¶
To update the input configuration files before a manual build:
-
Navigate to the
input/folder in the GitLab repository. -
Edit the relevant configuration file.
-
Commit and push the changes.
Verification¶
After the pipeline completes:
-
Navigate to Build → Pipelines.
-
Review the job list and status.
-
Click on individual jobs to view execution logs, resource usage, and error messages.
-
For a catalog-mode build, verify the catalog-specific result:
$OMNIA_DATA_PATH/image_build_manager/output/$OMNIA_PROJECT_NAME/<identifier>-v<version>/build_status.yml -
Review the global image dictionary when the log reports a dictionary hit:
$OMNIA_DATA_PATH/image_build_manager/output/$OMNIA_PROJECT_NAME/image_group_dictionary.json
Next steps¶
- Execute Deploy Pipeline -- Deploy the built images to cluster nodes
- Automate Build and Deployment with Cadence -- Reconcile RPM content and run build and deployment together
- Cleanup Operations -- Remove old Image Groups manually or configure automated cleanup based on age-based retention policies
Troubleshooting¶
- Parse-Catalog stage failing: Ensure the JSON is aligned with the expected schema. See catalog examples at https://github.com/dell/omnia/tree/issue-4849-omnia-modernization/src/main/samples/catalogs.
- Repository Manager stage failing: Check the log path from the API
response and verify the selected catalog,
repo_manager_config.yml, andrepo_manager_endpoint_config.yml. - Build-Image stage failing: Ensure the catalog has valid functional groups.
- A dictionary entry is not reused: Confirm that
force_rebuildisfalseand that all three S3 artifacts recorded by the entry still exist. Missing artifacts convert the lookup to a rebuild. - For additional issues, see BuildStreaM Troubleshooting.