ofrp-12.1: add build.toml for the shared pipeline

Moves the base settings of the OFRP-12.1 Jenkins job into build.toml:
portal project orangefox (R12.1), OFRP-12.1 release naming, ZFS dataset
build/ofox-12.1, lunch twrp_<codename>-eng with FOX_BUILD_DEVICE, mka adbd,
and the OrangeFox .img/.zip with their native .md5 files. README: adding a
device no longer needs a new job; adding a base needs build.toml, @warm,
a job named after the branch and a portal mapping.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Nicholas Andrew 2026-10-11 00:21:36 -04:00
commit bc03a04793
2 changed files with 43 additions and 3 deletions

View file

@ -2,7 +2,7 @@
Device manifests for the A-Team Jenkins build pipelines.
Each build job clones this repo, drops one device XML into `.repo/local_manifests/` of a warm source tree, syncs only the projects listed in it, and reads the device info from its annotations.
Each base branch has one Jenkins job (named after the branch) running the shared `Jenkinsfile` from `main`. It rolls the base's warm source tree back to `@warm`, drops one device XML into `.repo/local_manifests/`, syncs only the projects listed in it, reads the device info from its annotations and the base settings from the branch's `build.toml`.
## Layout
@ -85,8 +85,16 @@ plus a `.sha256` for each, e.g. `OFRP-12.1_A-Team_genevn_XT2315-261009.zip`.
```
2. Copy an existing XML to `<codename>.xml` and edit the projects and annotations.
3. Commit and push.
4. Create the Jenkins job (`<RECOVERY>-<codename>`, e.g. `OFRP-genevn`) pointing at the branch and file.
4. That's it: the branch's Jenkins job (named after the branch, e.g. `ofrp-12.1`) lists the new XML in its
`DEVICE` dropdown, and the portal picks it up on its next device sync.
## Adding a base
Create a new branch named `<base>-<version>` (e.g. `shrp-12.1`) and add a device XML for each device built on it. Each base has its own copy of a device's XML, so update model or name changes on every branch that has that device.
1. Create a new branch named `<base>-<version>` (e.g. `shrp-12.1`) and add a device XML for each device built on it.
Each base has its own copy of a device's XML, so update model or name changes on every branch that has that device.
2. Add a `build.toml` (see the README on `main`) describing the base: portal project, release naming, ZFS dataset,
lunch target and release files.
3. Prepare the warm source tree on buildBox and snapshot it as `<dataset>@warm`.
4. Create a Jenkins job named exactly like the branch, using *Pipeline script from SCM* on `build_manifests`
branch `main`, script path `Jenkinsfile`.
5. Map the portal project to the job in the portal admin.

32
build.toml Normal file
View file

@ -0,0 +1,32 @@
# Build settings for the ofrp-12.1 base, read by the shared Jenkinsfile on main.
# Data only: unknown keys or wrong types stop the build.
[base]
project = "orangefox" # portal project slug
project_name = "OrangeFox"
version = "R12.1" # version shown in the portal
release_tag = "OFRP" # <release_tag>-<release_ver>_A-Team_<codename>_<model>-<YYMMDD>
release_ver = "12.1"
source_root = "/build/ofox-12.1" # mountpoint of zfs_dataset; out/ lives inside it
zfs_dataset = "build/ofox-12.1" # rolled back to @warm before and after every build
warm_check = ["vendor/recovery"] # must exist in the warm base
lunch_target = "twrp_{codename}-eng"
make_extra = ["adbd"] # built together with the ateam.partition target
changelog = "Automated OrangeFox testing build."
[base.env] # extra environment for lunch and the build
FOX_BUILD_DEVICE = "{codename}" # everything else (OF_* / FOX_*) comes from the tree's OFRP.mk
# Release files, picked from out/target/product/<codename>/ (exactly one match each)
[outputs.img]
glob = "OrangeFox-*.img"
checksum = "md5" # native sidecar to verify: md5 | sha256 | none
[outputs.zip]
glob = "OrangeFox-*.zip"
checksum = "md5"
test_zip = true
# Per-device overrides (lunch_target, make_extra, env, outputs), for example:
# [devices.sycamore_row_5G]
# lunch_target = "twrp_sycamore_row_5G-eng"