Using the devcontainer
Follow the ublue-os/devcontainer documentation.
Building Bluefin
Bluefin is cloud native, so all the tooling can be run locally or on any server. Check out the Universal Blue Forge if you're interested in self-hosting. Just is used to manage build tasks. It is designed to facilitate local development. It is also useful for building Bluefin on a wider variety of CI/CD systems.
First clone the repo:
git clone https://github.com/projectbluefin/bluefin.git
origin in this repo points to ublue-os/bluefin (the upstream source). Always push to projectbluefin explicitly:
git push projectbluefin your-branch-name
Or install the push guard hook after cloning:
bash .github/scripts/install-hooks.sh
The Justfile at the root of the repo is used to build the images. The general pattern is:
just build <image> <tag> <flavor>
| Command | Description |
|---|---|
just build bluefin testing main | Build the testing stream image |
just build bluefin testing nvidia-open | Build the testing stream NVIDIA image |
- Images:
bluefin - Tags:
testing,stable - Flavors:
main,nvidia-open
Validate a combination:
just validate bluefin testing main
List available recipes:
just
Tasks
clean
Cleans the repository by removing build directories and the previous.manifest.json file.
validate
Validates the combination of image, tag, and flavor provided as arguments.
- Checks if the provided image, tag, and flavor exist in the predefined associative arrays.
build
Builds an image with specified parameters (image, tag, flavor).
- Validates the input parameters, determines the image name, base image, target, Fedora version, and kernel release.
- Uses
podman buildto create the container image with appropriate build arguments and labels. - Optionally calls the
rechunktask viabuild-rechunk.
build-rechunk
A convenience task that calls build followed by the rechunk step to optimize image storage.
rechunk
Rechunks an image to optimize its storage for faster OTA updates.
- Ensures the image is already built and available in the local Podman store.
- Uses
rpm-ostree compose build-chunked-ocito chunk the layers.