Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 0 additions & 36 deletions .github/workflows/build-image-gts.yml

This file was deleted.

3 changes: 0 additions & 3 deletions .github/workflows/build-images.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,6 @@ permissions:
id-token: write

jobs:
build-image-gts:
uses: ./.github/workflows/build-image-gts.yml
secrets: inherit
build-image-stable:
uses: ./.github/workflows/build-image-stable.yml
secrets: inherit
Expand Down
8 changes: 3 additions & 5 deletions .github/workflows/generate-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,18 @@ on:
workflow_call:
inputs:
stream_name:
description: "Release Tag (e.g. gts, stable)"
description: "Release Tag (e.g. stable)"
type: string
required: true
workflow_dispatch:
inputs:
handwritten:
description: "Small Changelog about changes in this build"
stream_name:
description: "Release Tag (e.g. gts, stable)"
description: "Release Tag (e.g. stable)"
required: true
type: choice
options:
- '["gts", "stable"]'
- '["gts"]'
- '["stable"]'

permissions:
Expand Down Expand Up @@ -55,7 +53,7 @@ jobs:

- name: Create Release
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
if: contains(fromJson('["gts", "stable"]'), matrix.version) && (github.event.schedule == '0 1 * * TUE' || contains(fromJson('["workflow_dispatch", "workflow_call"]'), github.event_name))
if: contains(fromJson('["stable"]'), matrix.version) && (github.event.schedule == '0 1 * * TUE' || contains(fromJson('["workflow_dispatch", "workflow_call"]'), github.event_name))
with:
name: ${{ steps.generate-release-text.outputs.title }}
tag_name: ${{ steps.generate-release-text.outputs.tag }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/reusable-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ on:
default: bluefin
type: string
stream_name:
description: "The Fedora Version: gts, stable, or latest"
description: "The Fedora Version: stable, latest, or beta"
required: true
type: string
kernel_pin:
Expand Down
12 changes: 6 additions & 6 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ This document provides essential information for coding agents working with the
- **Two Build Targets**: `base` (regular users) and `dx` (developer experience)
- **Image Flavors**: main, nvidia-open
- **Fedora Versions**: 42, 43 supported
- **Stream Tags**: `latest` (F42/43), `beta` (F42/43), `stable` (F42), `gts` (F42 Grand Touring Support)
- **Stream Tags**: `latest` (F42/43), `beta` (F42/43), `stable` (F42)
- **Build Process**: Sequential shell scripts in build_files/ directory
- **Base Images**: Uses `ghcr.io/ublue-os/silverblue-main` as foundation from Universal Blue

Expand Down Expand Up @@ -161,7 +161,6 @@ The repository uses mandatory pre-commit validation:
### GitHub Actions Workflows
- `build-image-latest-main.yml` - Builds latest images on main branch changes
- `build-image-stable.yml` - Builds stable release images
- `build-image-gts.yml` - Builds GTS (Grand Touring Support) images
- `build-image-beta.yml` - Builds beta images for testing F42/F43
- `reusable-build.yml` - Core build logic for all image variants
- `generate-release.yml` - Generates release artifacts and changelogs
Expand All @@ -170,7 +169,8 @@ The repository uses mandatory pre-commit validation:
- `moderator.yml` - Repository moderation tasks

**Workflow Architecture:**
- Stream-specific workflows (gts, stable, latest, beta) call `reusable-build.yml`

- Stream-specific workflows (stable, latest, beta) call `reusable-build.yml`
- `reusable-build.yml` builds both base and dx variants for all flavors (main, nvidia-open)
- Fedora version is dynamically detected based on stream tag
- Images are signed with cosign and pushed to GHCR
Expand Down Expand Up @@ -252,12 +252,12 @@ The `Justfile` is the central build orchestration tool with these key recipes:
```bash
images: bluefin, bluefin-dx
flavors: main, nvidia-open
tags: gts, stable, latest, beta
tags: stable, latest, beta
```

**Version Detection:**
- `just fedora_version <image> <tag> <flavor>` - Dynamically detects Fedora version from upstream base images
- For `gts` and `stable`: Checks `ghcr.io/ublue-os/base-main:<tag>`
- For `stable`: Checks `ghcr.io/ublue-os/base-main:<tag>`
- For `latest`/`beta`: Checks corresponding upstream tags
- Returns the Fedora major version (e.g., 42, 43)

Expand All @@ -275,7 +275,7 @@ The `Containerfile` uses a multi-stage build process:
- `FEDORA_MAJOR_VERSION` - Dynamically set by Just (42/43)
- `IMAGE_NAME` - Target image name (bluefin/bluefin-dx)
- `KERNEL` - Pinned kernel version (optional)
- `UBLUE_IMAGE_TAG` - Stream tag (gts/stable/latest/beta)
- `UBLUE_IMAGE_TAG` - Stream tag (stable/latest/beta)

### Build Script Execution Order
Scripts in `build_files/base/` execute in numerical order:
Expand Down
11 changes: 5 additions & 6 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ flavors := '(
[nvidia-open]=nvidia-open
)'
tags := '(
[gts]=gts
[stable]=stable
[latest]=latest
[beta]=beta
Expand Down Expand Up @@ -116,7 +115,7 @@ build $image="bluefin" $tag="latest" $flavor="main" rechunk="0" ghcr="0" pipelin
# AKMODS Flavor and Kernel Version
if [[ "${flavor}" =~ hwe ]]; then
akmods_flavor="bazzite"
elif [[ "${tag}" =~ gts|stable ]]; then
elif [[ "${tag}" =~ stable ]]; then
akmods_flavor="coreos-stable"
elif [[ "${tag}" =~ beta ]]; then
akmods_flavor="main"
Expand Down Expand Up @@ -627,11 +626,11 @@ generate-build-tags image="bluefin" tag="latest" flavor="main" kernel_pin="" ghc
# Weekly Stable / Rebuild Stable on workflow_dispatch
github_event="{{ github_event }}"
if [[ "{{ tag }}" =~ "stable" && "${WEEKLY}" == "${TODAY}" && "${github_event}" =~ schedule ]]; then
BUILD_TAGS+=("stable" "stable-${version}" "stable-${version:3}")
BUILD_TAGS+=("stable" "stable-${version}" "stable-${version:3}" "gts" "gts-${version}" "gts-${version:3}")
elif [[ "{{ tag }}" =~ "stable" && "${github_event}" =~ workflow_dispatch|workflow_call ]]; then
BUILD_TAGS+=("stable" "stable-${version}" "stable-${version:3}")
BUILD_TAGS+=("stable" "stable-${version}" "stable-${version:3}" "gts" "gts-${version}" "gts-${version:3}")
elif [[ "{{ tag }}" =~ "stable" && "{{ ghcr }}" == "0" ]]; then
BUILD_TAGS+=("stable" "stable-${version}" "stable-${version:3}")
BUILD_TAGS+=("stable" "stable-${version}" "stable-${version:3}" "gts" "gts-${version}" "gts-${version:3}")
Comment on lines -630 to +633

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

More specifically it's in the generate tag and tags images and step in reusable-build.yml, https://github.com/castrojo/bluefin/actions/runs/22684304133/job/65762980566#step:15:23

elif [[ ! "{{ tag }}" =~ stable|beta ]]; then
BUILD_TAGS+=("${FEDORA_VERSION}" "${FEDORA_VERSION}-${version}" "${FEDORA_VERSION}-${version:3}")
fi
Expand Down Expand Up @@ -685,7 +684,7 @@ tag-images image_name="" default_tag="" tags="":
# > just retag-nvidia-on-ghcr latest latest-41.20250228.1 0
#
# working_tag: The tag of the most recent known good image (e.g., stable-daily-41.20250126.3)
# stream: One of latest, stable-daily, stable or gts
# stream: One of latest, stable-daily, or stable
# dry_run: Only print the skopeo commands instead of running them
#
# First generate a PAT with package write access (https://github.com/settings/tokens)
Expand Down
2 changes: 1 addition & 1 deletion build_files/base/03-install-kernel-akmods.sh
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ kargs = ["rd.driver.blacklist=nouveau", "modprobe.blacklist=nouveau", "nvidia-dr
EOF
fi

# ZFS for gts/stable
# ZFS for stable
if [[ ${AKMODS_FLAVOR} =~ coreos ]]; then
# Fetch ZFS RPMs
skopeo copy --retry-times 3 docker://ghcr.io/ublue-os/akmods-zfs:"${AKMODS_FLAVOR}"-"$(rpm -E %fedora)"-"${KERNEL}" dir:/tmp/akmods-zfs
Expand Down
Loading