This tool is used to build Ubuntu images:
- Ubuntu Core snap-based images from model assertions
- Ubuntu classic preinstalled images using image definition
Future versions should be generalized to build more (eventually all) Ubuntu images.
Ubuntu 18.04 (Bionic Beaver) is the minimum platform requirement, but Ubuntu 20.04 (Focal Fossa) or newer is recommended. All required third party packages are available in the Ubuntu archive.
To run the test suite locally, install all the build dependencies named in the debian/control
file. Run the following command from the root directory of the repository:
$ sudo apt build-dep ./
Alternatively, install the packages named in the Build-Depends
field.
- Project home: https://github.com/Canonical/ubuntu-image
- Report bugs at: https://bugs.launchpad.net/ubuntu-image
- Git clone: https://github.com/Canonical/ubuntu-image.git
- Reference page:
ubuntu-image
syntax and options gadget.yaml
specification: Gadget snaps
- Ensure golang >= 1.21 is installed.
- Clone the Git repository using
git clone https://github.com/canonical/ubuntu-image.git
. cd
into the newly cloned repository.- Run
go build -o . ./...
. - The newly compiled executable
ubuntu-image
is created in the current directory.
ubuntu-image is released as a snap on the Snap Store.
When changes are merged in the main
branch, a new snap is automatically built and pushed to the latest/edge
channel.
When we think we have a "stable enough" version that we don't want to break with future merges in main, we promote it to latest/candidate
. To do so:
- Create a new branch.
- Update the version in
snapcraft.yaml
. - Add a changelog entry to
debian/changelog
. - Commit, create a version tag, and push.
- Merge.
- Wait for the build to appear in
latest/edge
. - Promote the build to
latest/candidate
.
After a couple of weeks, if our "early adopters" are happy and we did not break any build or if we did not spot any major fix to do, promote this version from latest/candidate
to latest/stable
.
This way, our users can choose between:
- The
latest/edge
channel updated as soon as we merge changes. - The
latest/candidate
channel with new features/bugfixes but with potentially some newly introduced bug. This channel would be good to let users test requested features. - The
latest/stable
channel that should hopefully contain a rather "bug-free" version because it was tested in more various situations.