feat: Add bootc support (#448)

Adds support for using `bootc` as the preferred method for booting from
a locally created image. This new method gets rid of the need to create
a tarball and move it to the correct place and instead it will make use
of `podman scp` which copies the image to the root `containers-storage`
and then has `rpm-ostree` and `bootc` boot from that store.

Closes #418 
Closes #200
This commit is contained in:
Gerald Pinder 2025-08-09 14:05:59 -04:00 committed by GitHub
parent 2c525854c9
commit 3a0be4099a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
65 changed files with 2991 additions and 1857 deletions

View file

@ -36,7 +36,7 @@ impl CiDriver for GithubDriver {
Ok(GITHUB_TOKEN_ISSUER_URL.to_string())
}
fn generate_tags(opts: &GenerateTagsOpts) -> miette::Result<Vec<String>> {
fn generate_tags(opts: GenerateTagsOpts) -> miette::Result<Vec<String>> {
const PR_EVENT: &str = "pull_request";
let timestamp = blue_build_utils::get_tag_timestamp();
let os_version = Driver::get_os_version()
@ -142,8 +142,6 @@ impl CiDriver for GithubDriver {
#[cfg(test)]
mod test {
use std::borrow::Cow;
use blue_build_utils::{
constants::{
GITHUB_EVENT_NAME, GITHUB_EVENT_PATH, GITHUB_REF_NAME, GITHUB_SHA, PR_EVENT_NUMBER,
@ -286,7 +284,7 @@ mod test {
)]
fn generate_tags(
#[case] setup: impl FnOnce(),
#[case] alt_tags: Option<Vec<Cow<'_, str>>>,
#[case] alt_tags: Option<Vec<String>>,
#[case] mut expected: Vec<String>,
) {
setup();
@ -294,9 +292,9 @@ mod test {
let oci_ref: Reference = "ghcr.io/ublue-os/silverblue-main".parse().unwrap();
let mut tags = GithubDriver::generate_tags(
&GenerateTagsOpts::builder()
GenerateTagsOpts::builder()
.oci_ref(&oci_ref)
.maybe_alt_tags(alt_tags)
.maybe_alt_tags(alt_tags.as_deref())
.platform(Platform::LinuxAmd64)
.build(),
)