Skip to content
Snippets Groups Projects
Commit 4922ec78 authored by Andrii Sosiuk's avatar Andrii Sosiuk
Browse files

[CICD][DOC] Add documentation describing how to add new boart into CI configuration

parent f03d97c9
No related branches found
No related tags found
No related merge requests found
# Adding a New Board to the CI Pipeline
This project uses CI pipelines to build and release Yocto images. The pipeline consists of two main stages:
- **Build Pipeline**: Builds Yocto images.
- **Release Pipeline**: Generates the release page with appropriate board-specific descriptions.
Both pipelines are generated from Jinja2 templates, with board-specific configurations encoded directly within these templates.
This document describes the steps required to add support for a new board.
## Overview
The CI system supports building and releasing images for multiple boards simultaneously. Since release pages and their associated metadata are generated automatically, you must properly update the configuration templates to support a new board.
There are two key Jinja2 templates involved:
- `build-pipeline-yocto.yml.jinja2` – defines the build logic per board.
- `release_templates/release_clea.jinja2` – defines board metadata for the release page.
## 1. Build Pipeline Template
**Template:** `build-pipeline-yocto.yml.jinja2`
This template is responsible for generating jobs to build Yocto images for each board.
The decision to build for a given board is based on whether the board’s codename is included in the `MACHINES` CI variable. Additional configuration parameters (e.g., processor type, distro variants) are handled within the template using conditionals.
> ️ When adding a new board, carefully review and update the template’s conditional logic.
### Key Sections to Update:
- `# Generated jobs`
- `# Stage: notify`
Ensure the new board is integrated correctly to trigger builds and post-build notifications as expected.
## 2. Release Pipeline Template
**Template:** `release_templates/release_clea.jinja2`
This template stores the metadata used to generate the release page for each supported board.
To support a new board, add a new dictionary entry to the `boards` list. All parameters are required and should be filled in carefully to ensure a consistent and accurate release page.
### Example Entry:
```jinja2
{%- set
boards = [
{
"codename": "e09",
"name": "SBC-3.5-RK3568 (formerly codenamed E09)",
"distros": distros_namespace.distros,
"machine_variants": render_machines("e09").strip().split(":"),
"processor": "rk3568",
"hw_support_description": "| SBC-3.5-RK3568 (formerly codenamed E09) | ARM | RK3568 | [SBC-3.5-RK3568 (E09)](https://secogroup.atlassian.net/wiki/spaces/SECOTech/pages/1804402689/SBC-3.5-RK3568+E09) |",
},
]
-%}
```
### Parameters:
- **`codename`**: Internal code name for the board.
- **`name`**: Display name on the release page.
- **`distros`**: Distro options available for the board generated via helper function. Leave this as-is.
- **`machine_variants`**: List of machine variants generated via helper function. Leave as-is.
- **`processor`**: CPU family/type used in the board.
- **`hw_support_description`**: Markdown-formatted table row describing the board in the Hardware Support section.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment