Rackslab est fier d’annoncer la sortie de Fatbuildr v2.1.0, avec beaucoup de nouvelles fonctionnalités et corrections de bugs.
Les nouvelles fonctionnalités suivantes sont disponibles:
- Supports des hooks de tâches pour déclencher des actions (eg. notifications, synchronisation) lorsque les tâches commencent et se terminent.
- Support de nombreux formats d’images de disques et de conteneurs tels que squashfs, qcow2, images brutes avec partitions GPT (grâce à mkosi 22).
- Visualisation de la taille des artifacts et du contenu des paquets Deb/RPM directement dans l’interface web.
- Navigation intégrée du contenu des registres dans l’interface web, en option.
- Possibilité de définir des dépendances dans les prescripts spécifiques à certains formats ou distributions.
- Support de l’installation des modules DNS dans les environnements de construction RPM.
Cette nouvelle version inclue également de nombreuses corrections de bugs et des améliorations internes. C’est un nouveau grand pas vers la plus puissante et la plus solide solution logicielle de distribution continue !
Des paquets sont disponibles pour une installation facile sur de nombreuses distributions Linux :
- RHEL8
- RHEL9
- Debian 12 stable « bookworm »
- Debian 13 testing « trixie »
- Debian unstable « sid »
- Ubuntu 22.04 LTS « jammy »
- Ubuntu 24.04 LTS « noble »
- Fedora core 39
- Fedora core 40
Voici le contenu complet de la note de version (en anglais) :
Added
- Add
man
command in OSI format container image. - Additionally to
*.tar
images, publish OSI registry all other images formats supported bymkosi
(#112). - Give the possibility to run OSI builds directly on host instead of container
to support images formats for which
mkosi
utility require access to loop devices (#111). - Support multiples OSI images in the checksum file published in the same registry derivative directory (#114).
- Possiblity to define patches templates with variables to replace (#128).
- Support generation of prescript tarballs with subdirectory at any depth in source tree (#154).
- Support distribution and format specific tokens of prescript rules to allow definition of different values for different distributions and formats (#156).
- Support installation of DNF modules as prescript dependencies for RPM packages builds (#155).
- Automatically exclude from generated archive files untracked by git (ex:
referenced in
.gitignore
) when building or managing patches from local source tree with initialized git repository (#153). - Possibility to declare in instance pipelines definitions DNF modules to enable in Mock build environments (#163).
- Add reference to build task ID and instance name in RPM/deb package changelog entries (#15).
- Add result exportable field to all runnable tasks.
- Possibility to execute hook program before and after tasks are run (#19).
- Add
prep
templating variable for RPM spec files as shorthand forprep_sources
andprep_patches
(#89). - Bash completion script for
fatbuildrctl
(#28). - cli:
- Possibility to list artifacts in registries in remote instance with the REST API (#141)
- Possibility to remove artifacts from registries in remote instance with the REST API (#142)
- Add
--include-git-untracked
option tobuild
andpatches
commands to avoid automatic exclusion from generated archive of files untracked by git in local source tree. - Possibility to execute command in arguments of
images shell
andimages env-shell
(#98). - Support
$FATBUILDR_URI
environment variable to override value in user preferences file (#124). - Add git message template for patches to help filling and formatting patches metadata with expected fields and values (#30).
- Add
--batch
option tofatbuildrctl keyring
command for keyring creation and renewal tasks. - Add size attribute to artifacts found in registry.
- web:
- api:
- Add edit-registry permission action.
- Possibility to remove artifact from registries with DELETE verb on artifact route.
- Introduce
ArtifactContent
objects. - Add content key in
ArtifactDescription
object associated to a list ofArtifactContent
objects for Deb and RPM binary packages. - Add size attribute to
Artifact
objects.
- conf:
- Add
containerized
parameter in[format:osi]
section. - Add
exec_cmd
andexec_tmpfile
parameters in[format:deb]
and[format:rpm]
sections. - Add support of multiple build environments initialization commands.
- Add optional
env_default_modules
parameter in[format:rpm]
section. - Add
listing
boolean parameter in[web]
section to control activation of listing feature infatbuildrweb
. - Add
hook
parameter in[tasks]
section.
- Add
- pkgs:
- Add patch to define upstream version at build time.
- Install tasks hooks examples uncompressed.
- Install default system-wide git commit message template for patches in both Deb and RPM packages.
- Install
fatbuildrctl
bash completion script in both Deb and RPM packages. - Install fatbuildr tmpfiles.d configuration.
- Add bootstrap-icon additional source archive.
- Install bootstrap icon fonts in Deb and RPM packages.
- dbus:
- Add
ArtifactDeleteAs
method toorg.rackslab.Fatbuildr.Instance
object to submit artifact deletion task with another user identity. - Add
ArtifactContent
method toorg.rackslab.Fatbuildr.Instance
object to retrieve the content of binary artifacts. - Add
command
argument toImageShell
method. - Add
command
argument toImageEnvironmentShell
method.
- Add
- polkit: Add org.rackslab.Fatbuildr.edit-registry-as action.
- docs:
- Mention
containerized
parameter in[format:osi]
section of system configuration. - Mention
exec_cmd
andexec_tmpfile
parameters in[format:deb]
and[format:rpm]
sections of system configuration. - Mention new
env_default_modules
optional parameter in[format:rpm]
section of system configuration. - Mention
listing
parameter in[web]
section of system configuration. - Mention
hook
parameter in[tasks]
section of system configuration. - Mention new
modules
optional parameter for RPM distributions in instance pipelines definitions. - Document patches DEP-3 metadata support with Fatbuildr specific fields and their management with fatbuildrctl patches subcommand.
- Mention patches deb822
Template
field and the patches templating feature. - Mention possibility of missing JWT signing key for REST API HTTP/404 reponse code.
- Document impact of HTTP reverse proxies buffering on tasks output streams with mention of possible configuration settings.
- Document HTTP reverse proxies settings of interest to allow submission of large artifact builds and avoid timeout in live task output.
- Mention org.rackslab.Fatbuildr.edit-registry-as Polkit action.
- Mention edit-registry REST API permission action.
- Mention REST API route to delete artifact.
- Mention syntax, usage and behaviour of distribution and format specific tokens of prescript rules.
- Mention possibility to install DNF modules as prescript dependencies with
module:
prefix. - Mention new
--include-git-untracked
option forbuild
andpatches
commands infatbuildrctl
manpage. - Mention new
command
option forimages shell
andimages env-shell
commands infatbuildrctl
manpage. - Mention support of
$FATBUILDR_URI
environment variable infatbuildrctl
manpage. - Explain upstream
debian/
directory in present artifact archives is removed and replaced by Fatbuildr during Deb packages builds. - Add two examples of tasks hooks in Python:
- Basic hook to send syslog message.
- Advanced hook to send custom notifications messages (based on templates) on Matrix room.
- Add Tasks Hooks page.
- Mention new
prep
templating variable in artifact definition reference documentation for RPM spec files. - Mention new
commit_template
parameter in user preferences documentation infatbuildrctl
manpage. - Mention new
--batch
option forfatbuildrctl keyring
command in manpage. - Mention content section in binary artifact web interface page.
- Mention content key in
ArtifactDescription
object and introduceArtifactContent
object in REST API reference documentation. - Mention new
size
property ofArtifact
object in REST API reference documentation.
- Mention
Changed
- Rename Mock and Cowbuilder build environments to add
fatbuildr-
prefix. - Support mkosi v22 in osi image (#173).
- Factorize RPM repository updates by running it once for all packages that share the same architecture (#49).
- Replace
fatbuildrd
service runtime directory by fatbuildr tmpfiles.d configuration with POSIX ACL to give access to subdirectories tofatbuildr
system user and benefit from automatic cleanup bysystemd-tmpfiles
. - cli: Watch task output by default when submitting tasks. The
-w, --watch
option is replaced by the opposite--batch
option to submit tasks in background (#123). - conf:
- Rename
init_cmd
→init_cmds
parameter in[format:deb]
and[format:rpm]
sections of system configuration. - Bump Fedora release from 38 to 40 in rpm and osi container images.
- Install all mkosi 22 optional dependencies required to get all features and assign newuidmap/newgidmap ranges for Fatbuildr system user in osi container image.
- Install podman for Mock in rpm container image.
- Rename
- docs:
- Update table of available remote features with new registry content listing and artifact deletion possibilities.
- Mention possibility of HTTP/404 response code on supported derivative in REST API reference.
- Split documentation of
images
command options by subcommands in manpage. - Replace
-w, --watch
option by opposite--batch
option in manpage. - Remove mention of
--watch
options in various pages of documentation. - Use
fatbuildrctl shell images <command>
in troubleshooting page. - Rename
init_cmd
→init_cmds
parameter in[format:deb]
and[format:rpm]
sections of system configuration. - Mention usage of
%autopatch
macro behindprep_patches
templating variable in artifact definition reference documentation for RPM spec files. - Update supported Linux distributions in quickstart guide (drop Debian 11, Fedora 37-38, add Debian 13, Ubuntu 24.04, RHEL9, Fedora 38-40).
- pkgs:
- Use new
prep
variable in Fatbuildr RPM package spec file template. - Bump boostrap version to 5.3.3.
- Use new
Fixed
- Fix crash on client side when loading artifact definition for OSI builds (#100).
- Fix crash due to concatation with incompatible types when defining the full release for OSI build on server side (#101).
- Add
apt
command in container for OSI image to meet Debian and Ubuntu based images build requirements (#102). - Fix
systemd-nspawn
execution error throughmkosi
in OSI format container caused by unavailability of DBus system session (#103). - Fix GPG keys unsupported filetype error when running
apt-get update
on build of Debian OSI images due to missingcmp
command (#104). - Search mkosi output image and checksum file in distro~release subdirectory in OSI builds (#105).
- Fix permission error on OSI artifacts produced by mkosi by faking sudo environment (#106).
- Fix AttributeError in fatbuildrd when publishing OSI artifacts (#107).
- Make RegistryOsi ensure instance registry directory exists (#109).
- Add missing chattr command in OSI container image (#110).
- Fix wrongly filtered out files containing debian or .git words in their path when building local archive on build submission (#113).
- Fix unusable version.dist variable in packaging code templates (#116).
- Fix crash on build on unsupported derivative in instance pipelines (#117).
- Fix crash on retrieving derivative version in artifact definition (#118).
- Fix crash when main archive source is not defined on build of Deb or RPM package (#119).
- Fix crash on missing checksum for a specific version in artifact definition file (#125).
- Fix crash in fatbuildrweb 404 error handler when HTTP request view arguments are not defined due to error during view matching (#126).
- Fix retrieval of instances list in DBus and fatbuildrweb when default instance is not defined (#127).
- Fix crash in fatbuildrctl when user preferences file is missing (#130).
- Fix crash in fatbuildrd when running containers with empty
init_opts
in site configuration file (#131). - Return HTTP/404 with appropriate error message instead of HTTP/500 (internal error) when trying to access exported armored public key on nonexistent keyring with fatbuildrweb (#133).
- Report error properly with fatbuildrctl when remote HTTP instance replies with internal error and HTTP/500 (#136).
- Report meaningful error message instead of generic HTTP/500 internal error when authenticating with JWT token on unexisting remote HTTP instance (#137).
- Fix crash with when watching streamed tasks output with HTTP REST API (#138).
- Avoid buffering with HTTP response headers on reverse proxies (#139).
- Fix crash of fatbuildrweb on builds with unsupported derivative (#149).
- Fix crash of fatbuildrctl on unexpected end of task output (#147)
- Fix crash of fatbuildrctl on task output connection closed by HTTP reverse proxy (#148).
- Sanitize PRESCRIPT_TARBALLS names for correct detection by Debian build system.
- Enable network access to run prescript in Mock during RPM build.
- Prescript failure due to missing groupadd/useradd commands (passwd package) in Debian sid build environment (#169).
- Conflict between
fatbuildrctl --uri
option andfatbuildrctl tokens save --uri
option that preventfatbuildrctl tokens generate
from connecting to an instance other than the default (#168). - Support artifact archive with existing
debian/
folder. During deb packages builds, this upstreamdebian/
folder is removed and replaced by one generated with the artifact definition (#174). - Detect console unix socket closed by server, generally due to unexpected
fatbuildrd
error, in order to avoid endless loop and properly stop the console on client side (fatbuildrctl
andfatbuildrweb
) with error message. - Check OSI artifact checksum file is properly created by mkosi or raise task execution error to report in task journal.
- Check container image and build environment exist or fail with appropriate error at the beginning of build tasks (#17).
- Fix
fatbuildrctl
crash when RPM spec file is not found (#165). - Use modern
%autopatch
macro instead of loop of%patchN
to avoid deprecated syntax error during RPM packages builds (#170). - Fix crash of
fatbuildrctl
on missing source definition in YAML artifact definition file (#171). - Handle JSON decode error in
fatbuildrctl
in case of unexpected failure infatbuildrweb
(#146). - Report error instead of crashing in
fatbuildrctl
when unable to find format corresponding to a given distribution with fatbuildrweb REST API (#172). - Validate keyring renewal duration format in server-side
fatbuildrd
and client-sidefatbuildrctl
(#31). - Fix reporting of keyring errors during keyring creation and renewal tasks execution.
- Drop off artifact and sources archives tarballs in subdirectory of fatbuildr runtime directory to avoid potential collisions between multiple builds in queue (#179).
- Fix
flask.helpers
locked_cached_property
import error in recent versions of Flask (#190). - docs:
- Add missing path parameter in REST API to retrieve artifact information.
- Add missing optional
architectures
parameter in instances pipelines definitions reference documentation.
- pkgs: Add missing dependency on patch package (#145).
Plus de détails sur le logiciel Fatbuildr sont disponibles dans sa page de description complète. Vous pouvez également découvrir les fonctionnalités avancées de la solution.
Envie d’essayer ? Suivez le guide de démarrage !
Liens utiles :