This repository contains GitHub Actions to build MocaccinoOS ISOs.
The CI will deploy from master the iso built in the mocaccino minio instance.
Each flavor is composed by packages coming from multiple repositories, here is a short summary.
Flavor | Mocaccino Micro Repository | Mocaccino Extra Repository | Mocaccino Desktop Repository | LiveCD Repository | Luet Official Repository | Mocaccino Kernel repository |
---|---|---|---|---|---|---|
Micro (conf) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | |
GNOME (conf) | ✔️ | ✔️ | ✔️ | ✔️ | ||
MATE (conf) | ✔️ | ✔️ | ✔️ | ✔️ | ||
KDE (conf) | ✔️ | ✔️ | ✔️ | ✔️ | ||
LXQT (conf) | ✔️ | ✔️ | ✔️ | ✔️ |
Each ISO has a corresponding spec that defines which packages and luet repositories are required to build the ISO.
The specs are under the spec/
folder. Here is an example:
packages:
# Packages to be installed in the rootfs
rootfs:
- utils/busybox
# Packages to be installed in the uefi image
uefi:
- live/systemd-boot
- system/mocaccino-live-boot
# Packages to be installed in the isoimage
isoimage:
- live/syslinux
- system/mocaccino-live-boot
# Packages to be installed in the initramfs
initramfs:
- distro/mocaccino-initramfs
# Use overlayfs to mount the rootfs. If disabled, only the initramfs will be booted.
overlay: "true"
# Image prefix. If Image date is disabled is used as the full title.
image_prefix: "MocaccinoOS-Micro-0."
image_date: "true"
# Luet config to use.
# It has to contain the repositories required to install the packages defined above.
luet:
config: conf/luet-micro.yaml
Each spec defines which packages to be installed from luet repositories. A config file for each spec has to be provided and placed in conf/
.
To build the iso, you need to run the isospec
script inside scripts/
, for e.g.
$> git clone https://github.com/mocaccinoOS/ci.git mocaccino-ci
$> cd mocaccino-ci
$> ./scripts/isospec specs/micro.yaml
When running it locally, you need these tools installed:
- luet
- luet-extensions (can be installed with
luet install luet-extensions
from the Luet official repository) - xorriso
- squashfs-tools
- dosfstools
- jq
- yq
e.g. the CI installs them as the following:
$> sudo apt-get install -y xorriso squashfs-tools dosfstools
$> curl https://gist.githubusercontent.com/mudler/8b8d6c53c4669f4b9f9a72d1a2b92172/raw/e9d38b8e0702e7f1ef9a5db1bfa428add12a2d24/get_luet_root.sh | sudo sh
$> sudo luet install repository/mocaccino-extra
$> sudo luet install utils/jq utils/yq