-
Bluefin Server deploys and installs via raw
- Discoverable Disk Images (DDI) and UEFI UKI binaries rather than an
- Anaconda ISO installer. Download installer and netboot artifacts
- below.
+
+ {(() => {
+ const installerAsset = latestRelease?.assets?.find(
+ (a) =>
+ a.name.startsWith("bluefin-server-installer_") &&
+ a.name.endsWith(".raw"),
+ );
+ const ddiAsset = latestRelease?.assets?.find(
+ (a) =>
+ a.name.startsWith("bluefin-server_") &&
+ a.name.endsWith(".raw") &&
+ !a.name.includes(".usr"),
+ );
+ const netbootUkiAsset = latestRelease?.assets?.find(
+ (a) =>
+ a.name.startsWith("bluefin-server-netboot_") &&
+ a.name.endsWith(".efi"),
+ );
+ const netbootEspAsset = latestRelease?.assets?.find(
+ (a) =>
+ a.name.startsWith("bluefin-server-netboot_") &&
+ a.name.endsWith(".esp.raw"),
+ );
+ const diskUkiAsset = latestRelease?.assets?.find(
+ (a) =>
+ a.name.startsWith("bluefin-server-") &&
+ a.name.endsWith(".efi") &&
+ !a.name.includes("-netboot_"),
+ );
+ const checksumAsset = latestRelease?.assets?.find(
+ (a) => a.name === "SHA256SUMS",
+ );
+ const checksumUrl =
+ checksumAsset?.url ??
+ (latestRelease
+ ? `https://github.com/projectbluefin/server/releases/download/${latestRelease.tag}/SHA256SUMS`
+ : "#");
+
+ const primaryEntries: DownloadEntry[] = [
+ ...(installerAsset
+ ? [
+ {
+ label: "USB Installer (x86_64 raw)",
+ isoUrl: installerAsset.url,
+ isoFilename: installerAsset.name,
+ checksumUrl,
+ buttonLabel: "Download Installer",
+ },
+ ]
+ : []),
+ ...(ddiAsset
+ ? [
+ {
+ label: "OS DDI Image (raw diskless)",
+ isoUrl: ddiAsset.url,
+ isoFilename: ddiAsset.name,
+ checksumUrl,
+ buttonLabel: "Download DDI",
+ },
+ ]
+ : []),
+ ];
+
+ const netbootEntries: DownloadEntry[] = [
+ ...(netbootUkiAsset
+ ? [
+ {
+ label: "Netboot UKI (UEFI HTTP/PXE)",
+ isoUrl: netbootUkiAsset.url,
+ isoFilename: netbootUkiAsset.name,
+ checksumUrl,
+ buttonLabel: "Download UKI",
+ },
+ ]
+ : []),
+ ...(netbootEspAsset
+ ? [
+ {
+ label: "Netboot ESP (systemd-boot raw)",
+ isoUrl: netbootEspAsset.url,
+ isoFilename: netbootEspAsset.name,
+ checksumUrl,
+ buttonLabel: "Download ESP",
+ },
+ ]
+ : []),
+ ...(diskUkiAsset
+ ? [
+ {
+ label: "Disk UKI (installed node update)",
+ isoUrl: diskUkiAsset.url,
+ isoFilename: diskUkiAsset.name,
+ checksumUrl,
+ buttonLabel: "Download UKI",
+ },
+ ]
+ : []),
+ ];
+
+ return (
+ 0
+ ? [
+ {
+ label: "Netboot & UEFI Artifacts",
+ entries: netbootEntries,
+ },
+ ]
+ : undefined
+ }
+ />
+ );
+ })()}
) : (
@@ -365,126 +480,156 @@ export function ProductReleaseAssets({
No published GitHub releases found for this product.
) : (
-
- {releases.map((release) => {
- const isIso = release.source.kind === "iso";
- const isBootc = !isIso && Boolean(identities[product].image);
- const isDdi = product === "server";
-
- // Find matching SBOM entry if present
- const sbomEntry = sbomStream?.releases
- ? Object.values(sbomStream.releases).find((r) =>
- release.tag.includes(r.tag?.replace("stable-", "") ?? ""),
- )
- : null;
-
- return (
-
-
-
-
-
- {release.tag}
-
-
-
- {isDdi
- ? "DDI + UKI"
- : isIso
- ? "ISO installer"
- : "bootc OCI"}
-
- {release.stream && (
-
- :{release.stream}
+
+ {product === "server" && (
+
+ )}
+ {(product === "server" ? releases.slice(0, 7) : releases).map(
+ (release, index) => {
+ const isIso = release.source.kind === "iso";
+ const isBootc = !isIso && Boolean(identities[product].image);
+ const isDdi = product === "server";
+
+ // Find matching SBOM entry if present
+ const sbomEntry = sbomStream?.releases
+ ? Object.values(sbomStream.releases).find((r) =>
+ release.tag.includes(r.tag?.replace("stable-", "") ?? ""),
+ )
+ : null;
+
+ return (
+
+ {product === "server" && index > 0 && (
+
+ )}
+
+
+
+ {/* Major component version boxes for server releases */}
+ {isDdi && release.versions && (
+
)}
-
-
- {formatDate(release.publishedAt)}
-
-
-
- {/* Supply Chain / Attestation Verification */}
- {!isIso && (
-
-
Supply chain & attestation:
- {isDdi ? (
-
- GPG-signed SHA256SUMS manifest & in-toto SLSA / SPDX
- SBOM published with release.
-
- ) : sbomEntry?.attestation?.verified ? (
-
- ✓ Provenance attestation verified (
- {sbomEntry.attestation.predicateType || "SLSA v1"}).
-
- ) : sbomEntry?.attestation?.present ? (
-
- Provenance attestation present in GHCR referrer.
-
- ) : (
-
- No attestation for this tag in the SBOM cache.
-
+
+ {/* Supply Chain / Attestation Verification */}
+ {!isIso && (
+
+ Supply chain & attestation:
+ {isDdi ? (
+
+ GPG-signed SHA256SUMS manifest & in-toto SLSA /
+ SPDX SBOM published with release.
+
+ ) : sbomEntry?.attestation?.verified ? (
+
+ ✓ Provenance attestation verified (
+ {sbomEntry.attestation.predicateType || "SLSA v1"}).
+
+ ) : sbomEntry?.attestation?.present ? (
+
+ Provenance attestation present in GHCR referrer.
+
+ ) : (
+
+ No attestation for this tag in the SBOM cache.
+
+ )}
+
)}
-
- )}
-
- {/* Switch or deployment instructions */}
- {isBootc && (
-
-
- Bootc container switch:
-
-
- {`sudo bootc switch --enforce-container-sigpolicy ${identities[product].image}:${release.stream ?? "stable"}`}
-
-
- )}
-
- {/* Downloadable assets table */}
- {release.assets.length > 0 && (
-
-
-
-
- | Asset file |
- Size |
- Action |
-
-
-
- {release.assets.map((asset) => (
-
-
- {asset.name}
- |
- {formatBytes(asset.size)} |
-
-
- Download
-
- |
-
- ))}
-
-
-
- )}
-
- );
- })}
+
+ {/* Switch or deployment instructions */}
+ {isBootc && (
+
+
+ Bootc container switch:
+
+
+ {`sudo bootc switch --enforce-container-sigpolicy ${identities[product].image}:${release.stream ?? "stable"}`}
+
+
+ )}
+
+ {/* Downloadable assets table */}
+ {release.assets.length > 0 && (
+
+
+
+
+ | Asset file |
+ Size |
+ Action |
+
+
+
+ {release.assets.map((asset) => (
+
+
+ {asset.name}
+ |
+ {formatBytes(asset.size)} |
+
+
+ Download
+
+ |
+
+ ))}
+
+
+
+ )}
+
+
+ );
+ },
+ )}
)}