Build the rpms for EL9, EL10 and SUSE 16 and the debs for Ubuntu noble and resolute, each for x86_64 and aarch64, install every set on a clean container and publish them as a rolling nightly pre-release. Each release asset is one target's bundle: all of its packages, repository metadata and an INSTALL.txt. Besides the in-tree components this packages confluent_ipxe from the iPXE release roms and the browserfs and vinz helpers from their own repositories. The osdeploy utils are built where buildrpm builds them, el7 for the x86_64 el8bin set, so they still run on the oldest targets. Genesis is left out for now. Noarch packages are built once, in the x86_64 legs, and the aarch64 legs build only what is architecture specific. Build tools are installed without weak dependencies, while the smoke tests keep the distribution defaults, since they stand in for a user's install. Scheduled runs skip the build when neither confluent nor the helper repositories moved since the last published nightly. Pull requests that touch the packaging build and test without publishing.
2.7 KiB
Confluent
Confluent is a software package to handle essential bootstrap and operation of scale-out server configurations. It supports stateful and stateless deployments for various operating systems.
Check this page for a more detailed list of features.
Confluent is the modern successor of xCAT. If you're coming from xCAT, check out this comparison.
Documentation
Confluent documentation is hosted on: https://xcat2.github.io/confluent-docs/
Download
Get the latest version from: https://xcat2.github.io/confluent-docs/downloads/
Check release notes on: https://xcat2.github.io/confluent-docs/release_notes/
Open Source License
Confluent is made available under the Apache 2.0 license: https://opensource.org/license/apache-2-0
Developers
Want to help? Submit a Pull Request.
Versioning and releases
The top-level VERSION file names the release the current branch is working toward. Build scripts
call ./mkversion, which turns it into the version stamped on packages: the tag itself on a release
tag (4.0.1), otherwise a development version (4.0.1~dev5+gdeadbee). Packages sort it before the
release it leads up to. Only setup.py gets the PEP 440 spelling, 4.0.1.dev5+gdeadbee.
mkversion also derives a version from the newest tag reachable from HEAD and uses whichever is
higher, so forgetting to bump VERSION after tagging the current branch cannot walk the version
backwards. Staying ahead of tags on other branches is what VERSION itself is for: patch releases
are tagged on release branches, which master never sees.
Cutting a new series:
- Land the release commit on master and tag
X.Y.0there. - Create branch
X.Yfrom that tag; it inheritsVERSION=X.Y.0. - Only then bump
VERSIONon master. Doing it before step 2 leaves the release branch on the wrong series.
Patch releases land on branch X.Y and are tagged X.Y.Z there; no VERSION edit is needed.
Nightly builds
.github/workflows/nightly.yml builds the rpms (EL9, EL10, SUSE 16) and debs (Ubuntu 24.04, 26.04)
for x86_64 and aarch64 every night that something changed, installs each set on a clean container,
and publishes them as the nightly pre-release. Every bundle there holds all packages for one
target and an INSTALL.txt. Pull requests that touch the packaging run the same build and tests
without publishing. Genesis is not built there yet.