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 |
---|---|---|---|---|---|
Micro (conf) | ✔️ | ✔️ | ✔️ | ✔️ | |
GNOME (conf) | ✔️ | ✔️ | ✔️ | ||
MATE (conf) | ✔️ | ✔️ | ✔️ | ||
KDE (conf) | ✔️ | ✔️ | ✔️ | ||
XFCE (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
# This configuration isn't necessarly required. You can also just specify the repository to be used in the luet configuration file
repository:
packages:
- repository/mocaccino-micro
- repository/mocaccino-musl-universe
initramfs:
- repository/mocaccino-micro
# Optionally, you can specify initramfs/kernel and avoid generation on-the-fly
# files must be present on /boot folder in either initramfs or rootfs
initramfs:
kernel_file: "bzImage"
rootfs_file: "rootfs.cpio.xz"
# 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 luet makeiso
for e.g.
$> git clone https://github.com/mocaccinoOS/ci.git mocaccino-ci
$> cd mocaccino-ci
$> luet makeiso specs/micro.yaml
luet makeiso
can be installed with luet install extension/makeiso
after Luet official repository repositories are enabled in the system.
When running it locally, you need these tools installed:
- luet
- luet-makeiso
- xorriso (provided by the dev-libs/libisoburn package in Gentoo/Sabayon)
- squashfs-tools
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