Skip to content

Commit 44fe44e

Browse files
authored
Document the Neon OS build system, including automation and output file structure (#63)
Co-authored-by: Daniel McKnight <daniel@neon.ai>
1 parent 69f66b2 commit 44fe44e

1 file changed

Lines changed: 38 additions & 1 deletion

File tree

docs/neon_os/index.md

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,41 @@ different `core`.
4545
- `release`: a GitHub release in the Neon OS repository, identified by the `build version`.
4646

4747
## Build System
48-
Neon OS images are built using recipes in [neon-debos](https://github.com/NeonGeckoCom/neon_debos).
48+
[Neon OS](https://github.com/neongeckocom/neon-os) images are built using recipes
49+
in [neon-debos](https://github.com/NeonGeckoCom/neon_debos).
50+
OS images and updates are served via HTTP server with a predictable directory
51+
structure. The build scripts are located in the [neon-os repository](https://github.com/neongeckocom/neon-os).
52+
53+
## Build Image Action
54+
An OS build is triggered via GitHub actions and generally runs on a self-hosted
55+
runner. This action may build for multiple platforms (i.e. rpi4, opi5) and may
56+
build for multiple [cores](../neon_os/index.md#glossary). The following inputs
57+
are accepted:
58+
- REF: `beta` or `stable` to indicate if the build is a beta or stable release.
59+
> This was previously labelled as `dev` and `master` as it was tied to the
60+
`core` branch used in the build.
61+
- DEBOS_REF: branch of `neon_debos` to check out, generally `dev` or `master`
62+
- CORE_REF: branch of the [core repository](../neon_os/index.md#glossary) to
63+
check out, generally `dev` or `master`
64+
- PLATFORMS: space-delimited list of platforms to build for (i.e. `"rpi4 opi5"`)
65+
- UPLOAD_URL: base URL outputs may be downloaded from (i.e. `"https://2222.us"`)
66+
- OUTPUT_DIR: directory to move outputs to, may be a local or a remote directory
67+
spec (i.e. `/var/www/html/neon_images`, `<remote>:/<path_to_directory>`)
68+
- DO_CORE: boolean value, if true then build a release with the `debian-neon-image` recipe
69+
- DO_NODE: boolean value, if true then build a release with the `debian-node-image` recipe
70+
71+
## Build Outputs
72+
Output images are served via HTTP server, based on the inputs to the
73+
[build image action](#build-image-action).
74+
75+
An output image looks like:
76+
```text
77+
<core>/<platform>/<ref>/<build_id>_<timestamp>.img.xz
78+
node / opi5 / dev / debian-node-image-opi5_2024-06-06_16_25.img.xz
79+
```
80+
81+
Update files include a `squashfs` update and `json` metadata:
82+
```text
83+
<core>/<platform>/updates/<ref>/<build_id>_<timestamp>.<ext>
84+
node / opi5 /updates/ dev / debian-node-image-opi5_2024-06-06_16_25.squashfs
85+
```

0 commit comments

Comments
 (0)