diff --git a/README.md b/README.md index 917c588..afef92c 100644 --- a/README.md +++ b/README.md @@ -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 `.xml` and edit the projects and annotations. 3. Commit and push. -4. Create the Jenkins job (`-`, 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 `-` (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 `-` (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 `@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. diff --git a/build.toml b/build.toml new file mode 100644 index 0000000..76a9b8f --- /dev/null +++ b/build.toml @@ -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" # -_A-Team__- +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// (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"