Seeds the job for lineage-build-kicker, which loops over the device entries and spawns lineage-14.1 jobs for each. The parameters here line up with the variables passed to the bash stages in lineage-14.1
Parameters:
| Parameter | Values/Examples | Description | Default |
|---|---|---|---|
device |
angler, bullhead, marlin |
device codename for the device to build. These are typically all lowercase and usually bear no relation to the consumer name for the device | HELP-omgwtfbbq (will fail the build) |
version |
14.1, 13.0, 11 |
version of LineageOS to build | 14.1 |
build_type |
user, userdebug, eng |
the type of build to make. See the differences in the Android docs | userdebug |
ota |
true, false |
If true, the build is uploaded to OTA server, where it can be distributed over the air to devices | true |
repopick_nums |
157953,172537 |
Comma separated list of changes to download from the LineageOS Gerrit | (blank) |
repopick_tops |
network-traffic,long-press-power-torch-timeout |
Comma separated list of topics to download from the LineageOS Gerrit | (blank) |
with_su |
true, false |
If true, the build will be pre-rooted with the LineageOS root solution. If not, a root package can be downloaded from LineageOS | false |
with_gapps |
true, false |
If true, the build will be built with $WITH_GAPPS set to true. Requires vendor/gapps/arm64/arm64-vendor.mk to be inherited by device.mk with a WITH_GAPPS conditional to do anything meaningful |
false |
with_dexpreopt |
true, false |
If true, some apps are pre-optimised during the build. This dramatically increases build time and RAM usage during the build, but decreases the time spent on the first boot after an OTA update | false |
signed |
true, false |
If true, builds will be signed with the keys in the directory specified in lineage-14.1. Beware, moving between non-signed and signed builds requires a factory reset or migration build |
false |
signed_backuptool |
true, false |
If signed is true, and this is false, backuptool will not be included in the build, allowing /system to be left untouched to preserve verity |
true |
This downloads and interprets the json targets file, syncs the mirror (and waits for this to complete), and spawns the lineage-14.1 jobs with the parameters above. If they aren't specified, the defaults are assumed.
If it is given a device parameter (eg, when launched manually), it loops over the JSON until reaching the device wanted, and spawns lineage-14.1 for it.
Very simply just runs repo sync in the mirror directory
Builds LineageOS for a number of devices with specified parameters. The parameters have almost identical names to those used in lineage-targets.json
Stages:
- Sync mirror
- Sync local mirror of all LineageOS repos
- If this is an automatic (timed) job (eg. triggered by
lineage-build-kicker), this stage is skipped, as it was already done in thelineage-build-kickerjob
- Input manifest
- Delete files in
.repo/local_manifests/ - Download
./manifest-$version.xmlto .repo/local_manifests
- Sync
- Reset all repos to
HEAD - Sync from mirror
- Reset all repos to
HEAD - Run breakfast against device name
- Output manifest
- Export an xml with all the repos and their current HEAD
- This is later added as an artifact, so builds can be reproduced if needed
- Repopicks
- Loop over
repopick_numsandrepopick_topsand force pick, regardless of status (abandoned or draft etc.)
- Clean
- Clean out/ with
make clean
- Build
- Export
ccachevariables - Run lunch for device
- Kill
jack-serverand relaunches with a greater heap size - Build required target (
bootimageorbacon) - Kill
jack-server
- Sign build
- If
signedis true, remove produced zip, and signtarget_files.zip
- Upload to jenkins
- Upload manifest produced in (4), and
installed-files.txtto Jenkins - If OTA is set to false, upload the build alongside the md5sum (or just bootimage)
- Upload to www
- Upload build and md5sum to www server
- Add to updater
- Use API key to add build to the
lineageos_updater, linked to www upload
The contributor cloud found in Settings > About phone > Contributors is found in android_packages_apps_CMParts in cm-14.1, and android_packages_apps_Settings in cm-13.0
The script (found in LineageOS/contributors-cloud-generator) downloads all the repos from the LineageOS GitHub and creates an index from all of the authors of commits and builds a simple wordcloud of these
Be aware, the typical run time, providing you have the repos already synced, is approximately 4 hours.
Stages:
- Pull
- Sync CMParts (for cm-14.1), Settings (for cm-13.0) and contributors-cloud-generator
- Build prerequistes
- Build jar for generating cloud
- Cleanup
- Remove artificats from last build
- Build cloud
- Runs the generator generating a database, a PNG and an SVG
- Create draft changes
- For cm-14.1:
- Copy database to CMParts and add to git index
- Download Gerrit commit-msg hook (for ChangeID)
- Commit and adjust author, then upload to Gerrit
- For cm-13.0:
- Copy database to Settings and add to git index
- Download Gerrit commit-msg hook (for ChangeID)
- Commit and adjust author, then upload to Gerrit
- Archive output
- Uploads the built files to Jenkins
The LineageOS cve_tracker uses a JSON file to determine what kernel particular devices depend upon. This can be generated using the scripts here
Warning: I recommend running this infrequently (once a week or so) to avoid triggering GitHub's API abuse detection mechanisms
Stages:
- Clone
- Sync cve_tracker and scripts repo
- Set GitHub API key
- Download Gerrit
commit-msghook
- Generate JSON
- Run script to scrape all the JSON
- Run another script to generate a kernel=>device mappings JSON
- Compare
- If the resulting JSON is different to the one already present, continue, otherwise bail out
- Create draft change
- Add new json to git index, commit and push to Gerrit as a draft
LineageOS maintains a mirror manifest; a mechanism of using repo to store a complete mirror of the LineageOS GitHub for faster checkout of different branches. This needs regenerating occasionally to include newly forked/created repos
Warning: I recommend running this infrequently (once a week or so) to avoid triggering GitHub's API abuse detection mechanisms
Stages:
- Clone
- Clone LineageOS/mirror
- Generate mirror
- Move
default.xmlout of the way - Run script to generate mirror
- Compare
- If new file differs from old, continue, otherwise, bail out
- Create draft change
- Add new xml to git index, commit and push to Gerrit as a draft
The LineageOS updater web app uses a JSON file to determine what repos particular devices depend upon to determine relevant changelogs for each device. This can be generated using the scripts here
Warning: I recommend running this infrequently (once a week or so) to avoid triggering GitHub's API abuse detection mechanisms
Stages:
- Clone
- Sync lineageos_updater and scripts repo
- Set GitHub API key
- Download Gerrit
commit-msghook
- Generate JSON
- Run script to scrape all the JSON
- Run another script to generate a device mappings JSON
- Compare
- If the resulting JSON is different to the one already present, continue, otherwise bail out
- Create draft change
- Add new json to git index, commit and push to Gerrit as a draft
TheMuppets maintains a mirror manifest; a mechanism of using repo to store a complete mirror of the TheMuppets GitHub for faster checkout of different branches. This needs regenerating occasionally to include newly forked/created repos
Warning: I recommend running this infrequently (once a week or so) to avoid triggering GitHub's API abuse detection mechanisms
Stages:
- Clone
- Clone TheMuppets/manifests. and checkout the
mirrorbranch
- Generate mirror
- Move
default.xmlout of the way - Run script to generate mirror
- Compare
- If new file differs from old, continue, otherwise, bail out
- Create draft change
- Add new xml to git index, commit and push to GitHub
MindTheGapps is intended to be a minimal and simple as possible addon package that can be flashed in a custom recovery to obtain Google Apps on a custom ROM. These are often rebuilt using monthly releases from Google intended for Nexus devices. When a change on MindTheGapps/vendor_gapps is pushed, this job is triggered
Stages:
- Clone
- Clone MindTheGapps/vendor_gapps
- Loop
- Loop over the targets from
./mindthegapps-targetsand define a stage for each in whichmake $archis done
- Upload artifacts
- Upload produced MindTheGapps zips to an AndroidFileHost folder