Skip to content

Commit 2b4f771

Browse files
castrojoCopilotmergeraptor[bot]
authored
chore(ci): update testsuite pin to 74c86f1a (GNOME 50 smoke compat) (#37)
* fix: ship rechunker-group-fix service for legacy-rechunk→chunkah migration (#18) When users bootc switch from ghcr.io/ublue-os/bluefin (legacy-rechunk) to ghcr.io/projectbluefin/bluefin (chunkah/rpm-ostree build-chunked-oci), the first boot fails with a black screen. Root cause: legacy-rechunk's 1_prune.sh moves /etc/group entries into /usr/lib/group for nss-altfiles, but chunkah images don't use nss-altfiles. This desyncs /etc/gshadow from /etc/group, causing systemd-sysusers to fail on first boot: systemd-sysusers[1022]: /etc/gshadow: Group "plocate" already exists. The fix (from ublue-os/aurora, Dec 2025): a oneshot systemd service that rebuilds /etc/gshadow from /etc/group on every boot. The service is idempotent and harmless once gshadow is clean. Files added (verbatim from Aurora): - system_files/shared/usr/bin/rechunker-group-fix - system_files/shared/usr/lib/systemd/system/rechunker-group-fix.service Service enabled in build_files/base/17-cleanup.sh. Without this fix, the first boot into projectbluefin/bluefin after switching from ublue-os/bluefin WILL produce a black screen. Second boot of the same image succeeds, but users will think the image is broken. Fixes: ublue-os/bluefin#3852 See also: - ublue-os/bluefin-lts#918 (renner0e test report) - bootc-dev/bootc#1179 - ublue-os/aurora#1468 - https://github.com/ublue-os/legacy-rechunk/blob/1d2b0c2e/1_prune.sh#L41-L47 Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore(deps): update projectbluefin/testsuite digest to 12bd892 (#15) Co-authored-by: mergeraptor[bot] <267480593+mergeraptor[bot]@users.noreply.github.com> * chore(deps): update system_files/shared/usr/share/gnome-shell/extensions/blur-my-shell@aunetx digest to fcd5d02 (#16) Co-authored-by: mergeraptor[bot] <267480593+mergeraptor[bot]@users.noreply.github.com> * fix(ci): add packages:write to e2e reusable workflow callers The e2e.yml reusable workflow in projectbluefin/testsuite requires packages:write permission to push screenshots to GHCR. Without it, jobs fail with startup_failure before any steps run. Assisted-by: Claude Sonnet 4.5 via GitHub Copilot CLI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: ship rechunker-group-fix service for legacy-rechunk→chunkah migration When users bootc switch from ghcr.io/ublue-os/bluefin (legacy-rechunk) to ghcr.io/projectbluefin/bluefin (chunkah/rpm-ostree build-chunked-oci), the first boot fails with a black screen. Root cause: legacy-rechunk's 1_prune.sh moves /etc/group entries into /usr/lib/group for nss-altfiles, but chunkah images don't use nss-altfiles. This desyncs /etc/gshadow from /etc/group, causing systemd-sysusers to fail on first boot: systemd-sysusers[1022]: /etc/gshadow: Group "plocate" already exists. The fix (from ublue-os/aurora, Dec 2025): a oneshot systemd service that rebuilds /etc/gshadow from /etc/group on every boot. The service is idempotent and harmless once gshadow is clean. Files added (verbatim from Aurora): - system_files/shared/usr/bin/rechunker-group-fix - system_files/shared/usr/lib/systemd/system/rechunker-group-fix.service Service enabled in build_files/base/17-cleanup.sh. Without this fix, the first boot into projectbluefin/bluefin after switching from ublue-os/bluefin WILL produce a black screen. Second boot of the same image succeeds, but users will think the image is broken. Fixes: ublue-os/bluefin#3852 See also: - ublue-os/bluefin-lts#918 (renner0e test report) - bootc-dev/bootc#1179 - ublue-os/aurora#1468 - https://github.com/ublue-os/legacy-rechunk/blob/1d2b0c2e/1_prune.sh#L41-L47 Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(ci): update hardcoded testing branch references to main projectbluefin/bluefin uses main as default branch, not testing. Update build trigger, post-e2e filter, and weekly promotion workflow to reference main instead of the ublue-os/bluefin testing branch. Assisted-by: Claude via GitHub Copilot CLI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(ci): add packages:write to weekly-promotion e2e job The reusable testsuite e2e.yml requires packages:write to push screenshots to GHCR. Without it the job fails with startup_failure. Assisted-by: Claude Sonnet 4.5 via GitHub Copilot CLI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore(deps): pin quay.io/fedora-ostree-desktops/silverblue docker tag to d0ba53e (#22) Co-authored-by: mergeraptor[bot] <267480593+mergeraptor[bot]@users.noreply.github.com> * chore(deps): update ghcr.io/projectbluefin/common:latest docker digest to a5e120b (#23) Co-authored-by: mergeraptor[bot] <267480593+mergeraptor[bot]@users.noreply.github.com> * fix: resolve shellcheck warnings in rechunker-group-fix script (#25) Rewrite the /etc/gshadow sync loop to use while-read instead of for-in-cat (SC2013), properly quote variables (SC2086), and use printf instead of echo with unquoted command substitution (SC2046). Functionally identical — group names cannot contain spaces or glob characters, but the rewrite is safer and passes shellcheck cleanly. Assisted-by: Claude Sonnet 4.5 via GitHub Copilot CLI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore: remove stale silverblue-main entry from image-versions.yml (#26) PR #17 moved the base image from ghcr.io/ublue-os/silverblue-main to quay.io/fedora-ostree-desktops/silverblue. The Justfile only reads 'common' and 'brew' entries from image-versions.yml, so the silverblue-main entry is dead config that may cause unnecessary Renovate PRs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: correct IMAGE_VENDOR default from ublue-os to projectbluefin (#27) The Containerfile ARG default for IMAGE_VENDOR was still set to 'ublue-os' from the upstream fork. The Justfile correctly overrides it to 'projectbluefin' via repo_organization, but a bare build without Just would produce images with the wrong vendor label and ostree ref: ghcr.io/ublue-os/bluefin (wrong) ghcr.io/projectbluefin/bluefin (correct) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: update stale ublue-os org references to projectbluefin (#28) Update OCI labels and admin recipe that still pointed to the old upstream ublue-os/bluefin repository: - io.artifacthub.package.readme-url: ublue-os → projectbluefin - org.opencontainers.image.source: ublue-os → projectbluefin - retag-nvidia-on-ghcr recipe: copies from/to projectbluefin GHCR instead of ublue-os Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update CONTRIBUTING.md for main-branch workflow (#29) Replace all references to 'testing' branch with 'main' to reflect the projectbluefin/bluefin repo structure where PRs target main. Also update the promotion section to document the weekly automated promotion via weekly-testing-promotion.yml instead of the old pull-bot model. Stream reference table updated: latest builds from 'latest' branch, testing stream builds from 'main' branch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: update offline docs PDF URL to projectbluefin/documentation (#30) Update the bundled Bluefin documentation URL from the old ublue-os/bluefin-docs repo (now redirects) to the canonical projectbluefin/documentation location. Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update LTS variant link to projectbluefin/bluefin-lts (#31) The LTS variant has moved to the projectbluefin GitHub org. Update the Copilot instructions to reference the correct location. Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: update README badges and links to projectbluefin org (#33) - OpenSSF Scorecard badge: ublue-os → projectbluefin - GitHub Actions CI badges: ublue-os → projectbluefin - User count badge link target: ublue-os → projectbluefin - DeepWiki link: ublue-os/bluefin-docs → projectbluefin/bluefin - Remove stale Codacy badge (not configured for projectbluefin) Star history, LFX, and ossinsight charts retained as-is (historical data from the original ublue-os/bluefin repo). Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: update ublue-os org references in changelogs.py to projectbluefin (#32) Update the changelog generation script to reference the correct org: - REGISTRY: ghcr.io/ublue-os → ghcr.io/projectbluefin - Commit URL: github.com/ublue-os/bluefin → github.com/projectbluefin/bluefin - bootc switch commands: ghcr.io/ublue-os → ghcr.io/projectbluefin The image-info.json path (/usr/share/ublue-os/...) is a filesystem standard and intentionally kept as ublue-os. Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix: correct stale refs in github config files (#34) - ISSUE_TEMPLATE/config.yml: CONTRIBUTING.md URL pointed to blob/testing, now blob/main - copilot-setup-steps.yml: paths filter referenced non-existent workflows/ path, now correct Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(ci): update testsuite pin to include boot.1.1 ostree fix (#35) The pinned commit (12bd892e) predates the canonical boot.N symlink fix (7bcdf965) needed for Fedora 44 bootc images. The ostree-system-generator only accepts /ostree/boot.[01]/... paths; bootc 1.1.x installs deployments under boot.1.1 (versioned), causing the generator to fail → dbus-broker cascade failure → SSH never comes up. Updated to 97be5c76 (latest main) which includes all fixes. Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(ci): update testsuite pin to include summary error_message fix Pins to e4dd0345 which fixes AttributeError when behave emits error_message as a list (multi-line step errors). Assisted-by: Claude Sonnet 4.6 via GitHub Copilot Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * chore(ci): update testsuite pin to 74c86f1a (GNOME 50 smoke compat fixes) Pin projectbluefin/testsuite to 74c86f1a967f51cb0c7adf3732036ae2f7b89b4c which includes PR #138 — fixes all 17 failing e2e smoke scenarios: - conditional open() for Quick Settings / Date Menu panels - qecore key mapping patch (leftctrl/leftalt/leftshift) - multi-method app launch (gtk-launch / gio launch .desktop) - notification banner regex for GNOME 50 double-quoted results - TEXT_ROLES expansion for libadwaita 1.9 AT-SPI changes - DND gsettings fallback when Shell toggle is absent - bootloader-update.service in IGNORED_FAILED_UNITS_IN_VM - extensions window wait increased to 20s - Wi-Fi scenario skip when no wireless interface present Assisted-by: Claude Sonnet 4.6 via GitHub Copilot CLI Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: mergeraptor[bot] <267480593+mergeraptor[bot]@users.noreply.github.com>
1 parent ec6a12a commit 2b4f771

18 files changed

Lines changed: 125 additions & 63 deletions

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ contact_links:
44
url: https://docs.projectbluefin.io
55
about: "User documentation, FAQ, and feature guides."
66
- name: "Contribution guide"
7-
url: https://github.com/projectbluefin/bluefin/blob/testing/CONTRIBUTING.md
7+
url: https://github.com/projectbluefin/bluefin/blob/main/CONTRIBUTING.md
88
about: "Build, validation, and workflow rules — read before opening a PR."
99
- name: "Project Bluefin website"
1010
url: https://projectbluefin.io

.github/changelogs.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import re
99
from collections import defaultdict
1010

11-
REGISTRY = "ghcr.io/ublue-os/"
11+
REGISTRY = "ghcr.io/projectbluefin/"
1212

1313
IMAGE_MATRIX_LATEST = {
1414
"experience": ["base", "dx"],
@@ -41,7 +41,7 @@
4141
}
4242

4343
COMMITS_FORMAT = "### Commits\n| Hash | Subject | Author |\n| --- | --- | --- |{commits}\n\n"
44-
COMMIT_FORMAT = "\n| **[{short}](https://github.com/ublue-os/bluefin/commit/{githash})** | {subject} | {author} |"
44+
COMMIT_FORMAT = "\n| **[{short}](https://github.com/projectbluefin/bluefin/commit/{githash})** | {subject} | {author} |"
4545

4646
CHANGELOG_TITLE = "{tag}: {pretty}"
4747
CHANGELOG_FORMAT = """\
@@ -73,10 +73,10 @@
7373
IMAGE_NAME=$(jq -r '.["image-name"]' < /usr/share/ublue-os/image-info.json)
7474
7575
# For this Stream
76-
sudo bootc switch --enforce-container-sigpolicy ghcr.io/ublue-os/$IMAGE_NAME:{target}
76+
sudo bootc switch --enforce-container-sigpolicy ghcr.io/projectbluefin/$IMAGE_NAME:{target}
7777
7878
# For this Specific Image:
79-
sudo bootc switch --enforce-container-sigpolicy ghcr.io/ublue-os/$IMAGE_NAME:{curr}
79+
sudo bootc switch --enforce-container-sigpolicy ghcr.io/projectbluefin/$IMAGE_NAME:{curr}
8080
```
8181
8282
### Documentation

.github/copilot-instructions.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,5 @@ just/ # Extra just recipes
4949
## Related projects
5050

5151
- Documentation: [projectbluefin/bluefin-docs](https://github.com/projectbluefin/bluefin-docs) / [docs.projectbluefin.io](https://docs.projectbluefin.io)
52-
- LTS variant: [ublue-os/bluefin-lts](https://github.com/ublue-os/bluefin-lts)
52+
- LTS variant: [projectbluefin/bluefin-lts](https://github.com/projectbluefin/bluefin-lts)
5353
- Common layer: [projectbluefin/common](https://github.com/projectbluefin/common)

.github/copilot-setup-steps.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ on:
66
workflow_dispatch:
77
push:
88
paths:
9-
- .github/workflows/copilot-setup-steps.yml
9+
- .github/copilot-setup-steps.yml
1010
pull_request:
1111
paths:
12-
- .github/workflows/copilot-setup-steps.yml
12+
- .github/copilot-setup-steps.yml
1313

1414
jobs:
1515
# The job MUST be called `copilot-setup-steps` or it will not be picked up by Copilot.

.github/workflows/build-image-testing.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ on:
33
merge_group:
44
push:
55
branches:
6-
- testing
6+
- main
77
paths-ignore:
88
- ".github/workflows/*validate*.yml"
99
- "**.md"

.github/workflows/e2e-dispatch.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,10 @@ jobs:
131131
e2e:
132132
if: needs.dispatch.outputs.authorized == 'true'
133133
needs: [dispatch]
134-
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@3bc7b6ff0e4ceeea734e1e57c09caada469f9a66 # main
134+
permissions:
135+
packages: write
136+
contents: read
137+
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@12bd892e476ef930ae3240eff71402390bba8da9 # main
135138
with:
136139
image: ${{ needs.dispatch.outputs.image }}
137140
suites: smoke,developer,vanilla-gnome

.github/workflows/post-testing-e2e.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
name: Post-Testing E2E
22

3-
# Runs e2e smoke tests after every successful push build on the testing branch.
4-
# This gates the testing branch continuously so the weekly promotion
3+
# Runs e2e smoke tests after every successful push build on main.
4+
# This gates main continuously so the weekly promotion
55
# (weekly-testing-promotion.yml) promotes only e2e-verified commits.
66
on:
77
workflow_run:
88
workflows: ["Testing Images"]
99
types: [completed]
10-
branches: [testing]
10+
branches: [main]
1111

1212
permissions: read-all
1313

@@ -43,7 +43,10 @@ jobs:
4343
4444
run-e2e:
4545
needs: [e2e]
46-
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@3bc7b6ff0e4ceeea734e1e57c09caada469f9a66 # main
46+
permissions:
47+
packages: write
48+
contents: read
49+
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@74c86f1a967f51cb0c7adf3732036ae2f7b89b4c # main
4750
with:
4851
image: ${{ needs.e2e.outputs.image }}
4952
suites: smoke

.github/workflows/weekly-testing-promotion.yml

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ permissions:
1515

1616
jobs:
1717
# Verify that post-testing-e2e.yml already ran smoke tests on the current
18-
# testing HEAD since every push to testing triggers it. If e2e hasn't passed
18+
# main HEAD since every push to main triggers it. If e2e hasn't passed
1919
# on the current HEAD (e.g., a new push just landed), fail fast rather than
2020
# promoting untested code.
2121
verify-e2e:
@@ -26,15 +26,15 @@ jobs:
2626
build_run_id: ${{ steps.find-build.outputs.run_id }}
2727
image: ${{ steps.get-digest.outputs.image }}
2828
steps:
29-
- name: Lock testing HEAD SHA
29+
- name: Lock main HEAD SHA
3030
id: lock-sha
3131
env:
3232
GH_TOKEN: ${{ github.token }}
3333
run: |
3434
set -euo pipefail
35-
SHA=$(gh api repos/${{ github.repository }}/git/ref/heads/testing --jq '.object.sha')
35+
SHA=$(gh api repos/${{ github.repository }}/git/ref/heads/main --jq '.object.sha')
3636
echo "sha=$SHA" >> "$GITHUB_OUTPUT"
37-
echo "Locked testing SHA: $SHA"
37+
echo "Locked main SHA: $SHA"
3838
3939
- name: Find passing post-testing-e2e run for this SHA
4040
id: find-e2e
@@ -46,10 +46,10 @@ jobs:
4646
4747
# Look for a successful post-testing-e2e run on the locked SHA.
4848
# post-testing-e2e.yml fires via workflow_run — its head_sha matches
49-
# the testing push SHA that triggered it.
49+
# the main push SHA that triggered it.
5050
E2E_STATUS=$(gh run list \
5151
--workflow post-testing-e2e.yml \
52-
--branch testing \
52+
--branch main \
5353
--repo "${{ github.repository }}" \
5454
--limit 20 \
5555
--json headSha,conclusion \
@@ -59,14 +59,14 @@ jobs:
5959
echo "E2E status for $LOCKED_SHA: ${E2E_STATUS:-not found}"
6060
6161
if [ "$E2E_STATUS" != "success" ]; then
62-
echo "ERROR: post-testing-e2e has not passed on testing HEAD ($LOCKED_SHA)."
62+
echo "ERROR: post-testing-e2e has not passed on main HEAD ($LOCKED_SHA)."
6363
echo " Status: ${E2E_STATUS:-no run found}"
64-
echo " Either e2e is still running, failed, or testing just advanced."
64+
echo " Either e2e is still running, failed, or main just advanced."
6565
echo " Rerun this workflow once post-testing-e2e passes."
6666
exit 1
6767
fi
6868
69-
echo "✅ post-testing-e2e passed on testing HEAD"
69+
echo "✅ post-testing-e2e passed on main HEAD"
7070
7171
- name: Find the build run for this SHA
7272
id: find-build
@@ -78,7 +78,7 @@ jobs:
7878
7979
RUN_ID=$(gh run list \
8080
--workflow build-image-testing.yml \
81-
--branch testing \
81+
--branch main \
8282
--repo "${{ github.repository }}" \
8383
--limit 20 \
8484
--json databaseId,headSha,conclusion \
@@ -109,7 +109,10 @@ jobs:
109109
110110
e2e:
111111
needs: [verify-e2e]
112-
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@3bc7b6ff0e4ceeea734e1e57c09caada469f9a66 # main
112+
permissions:
113+
packages: write
114+
contents: read
115+
uses: projectbluefin/testsuite/.github/workflows/e2e.yml@12bd892e476ef930ae3240eff71402390bba8da9 # main
113116
with:
114117
image: ${{ needs.verify-e2e.outputs.image }}
115118
suites: developer,vanilla-gnome
@@ -121,51 +124,51 @@ jobs:
121124
outputs:
122125
has_diff: ${{ steps.check-diff.outputs.has_diff }}
123126
steps:
124-
- name: Checkout testing
127+
- name: Checkout main
125128
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
126129
with:
127130
fetch-depth: 0
128-
ref: testing
131+
ref: main
129132

130133
- name: Configure git
131134
run: |
132135
set -euo pipefail
133136
git config user.name "github-actions[bot]"
134137
git config user.email "github-actions[bot]@users.noreply.github.com"
135138
136-
- name: Verify testing SHA has not advanced
139+
- name: Verify main SHA has not advanced
137140
env:
138141
LOCKED_SHA: ${{ needs.verify-e2e.outputs.testing_sha }}
139142
run: |
140143
set -euo pipefail
141-
git fetch origin testing
142-
CURRENT_SHA=$(git rev-parse origin/testing)
144+
git fetch origin main
145+
CURRENT_SHA=$(git rev-parse origin/main)
143146
if [ "$CURRENT_SHA" != "$LOCKED_SHA" ]; then
144-
echo "ERROR: testing advanced during e2e ($LOCKED_SHA → $CURRENT_SHA)"
147+
echo "ERROR: main advanced during e2e ($LOCKED_SHA → $CURRENT_SHA)"
145148
echo "Untested commits would reach latest/stable. Aborting — rerun next week."
146149
exit 1
147150
fi
148-
echo "✅ testing SHA unchanged: $CURRENT_SHA"
151+
echo "✅ main SHA unchanged: $CURRENT_SHA"
149152
150-
- name: Check diff between testing and latest
153+
- name: Check diff between main and latest
151154
id: check-diff
152155
run: |
153156
set -euo pipefail
154157
git fetch origin latest stable 2>/dev/null || true
155-
if git diff --quiet origin/latest origin/testing 2>/dev/null; then
156-
echo "No diff between testing and latest — nothing to promote"
158+
if git diff --quiet origin/latest origin/main 2>/dev/null; then
159+
echo "No diff between main and latest — nothing to promote"
157160
echo "has_diff=false" >> "$GITHUB_OUTPUT"
158161
else
159162
echo "has_diff=true" >> "$GITHUB_OUTPUT"
160163
fi
161164
162-
- name: Fast-forward latest and stable to testing
165+
- name: Fast-forward latest and stable to main
163166
if: steps.check-diff.outputs.has_diff == 'true'
164167
run: |
165168
set -euo pipefail
166169
git push origin HEAD:refs/heads/latest
167170
git push origin HEAD:refs/heads/stable
168-
echo "✅ Promoted testing → latest + stable"
171+
echo "✅ Promoted main → latest + stable"
169172
170173
trigger-stable-build:
171174
needs: [promote-to-latest-and-stable]

CONTRIBUTING.md

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,36 @@
44

55
### I want to submit a fix or feature — what do I do?
66

7-
PR against the `testing` branch. Do not PR directly against `stable`. If your change is important and needs to ship immediately, apply the `cherry-pick` label to your PR and explain why in the description.
7+
PR against the `main` branch. Do not PR directly against `stable` or `latest`. If your change is important and needs to ship immediately, apply the `cherry-pick` label to your PR and explain why in the description.
88

9-
The `bluefin-backport-bot` will open a backport PR to `stable` automatically after your PR merges into `testing`.
9+
The `bluefin-backport-bot` will open a backport PR to `stable` automatically after your PR merges into `main`.
1010

1111
### Manual cherry-pick (if the bot is broken)
1212

1313
[The backport action](https://github.com/korthout/backport-action) powers the bot. If it fails, cherry-pick manually:
1414

1515
```bash
16-
# Find the merge commit on testing
17-
git log --oneline testing | head -20
16+
# Find the merge commit on main
17+
git log --oneline main | head -20
1818

1919
git switch stable
2020
git switch -c backport-my-fix
2121
git cherry-pick -x <commit-sha>
2222
```
2323

24-
Use the merge commit from `testing`, not the PR branch commit, so the origin is traceable.
24+
Use the merge commit from `main`, not the PR branch commit, so the origin is traceable.
2525

2626
### Only `:stable` / `:latest` is broken but `:testing` is not
2727

28-
The fix still goes into `testing` first. Rare exceptions exist when the feature was removed in `testing` and only exists in `stable`.
28+
The fix still goes into `main` first. Rare exceptions exist when the feature was removed in `main` and only exists in `stable`.
2929

30-
## Merging `testing` changes into `stable`
30+
## Promoting `main` to `stable` and `latest`
3131

32-
A pull bot opens PRs to merge `testing``stable` on each new commit. These can be merged any time there are no known regressions on `:testing`.
32+
Every Tuesday at 06:00 UTC the `weekly-testing-promotion` workflow:
33+
1. Verifies smoke e2e tests have passed on `main` HEAD
34+
2. Runs the full developer + vanilla-gnome e2e suite
35+
3. Fast-forwards `latest` and `stable` branches to `main`
36+
4. Triggers the `stable` and `latest` image builds
3337

3438
## Branching for a new Fedora version
3539

@@ -42,14 +46,14 @@ A pull bot opens PRs to merge `testing` → `stable` on each new commit. These c
4246

4347
- Wait for the official Fedora release (package freeze lifted)
4448
- Wait for coreos:stable (~2 weeks post-Fedora) → PR `ublue-os/akmods`
45-
- Bump workflow and Justfile version references in `testing`
49+
- Bump workflow and Justfile version references in `main`
4650
- Create a new `stable-f$N` branch and update branch protection rules
4751

4852
## Stream reference
4953

5054
| | `:stable` | `:latest` | `:testing` |
5155
|---|---|---|---|
52-
| Built from | `stable` branch | `testing` branch | `testing` branch |
56+
| Built from | `stable` branch | `latest` branch | `main` branch |
5357
| Kernel | coreos-stable, pinned on regressions | Fedora default, pinned on bad regressions | Fedora default |
54-
| Published | Weekly cron + emergency manual trigger | On merges to `testing` | On merges to `testing` |
58+
| Published | Weekly promotion + emergency manual trigger | Weekly promotion | On merges to `main` |
5559
| Who should use it | Regular users | Enthusiasts | Testers, developers |

Containerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
ARG BASE_IMAGE_NAME="silverblue"
2-
ARG FEDORA_MAJOR_VERSION="43"
2+
ARG FEDORA_MAJOR_VERSION="43@sha256:d0ba53e62bf61ddee07cdf3c5ec95b85aaa6ad058dc622dadd0e6ddf4dc4bc61"
33
ARG BASE_IMAGE="quay.io/fedora-ostree-desktops/silverblue"
44
ARG COMMON_IMAGE="ghcr.io/projectbluefin/common:latest"
55
ARG COMMON_IMAGE_SHA=""
@@ -23,7 +23,7 @@ ARG AKMODS_FLAVOR="coreos-stable"
2323
ARG BASE_IMAGE_NAME="silverblue"
2424
ARG FEDORA_MAJOR_VERSION="40"
2525
ARG IMAGE_NAME="bluefin"
26-
ARG IMAGE_VENDOR="ublue-os"
26+
ARG IMAGE_VENDOR="projectbluefin"
2727
ARG KERNEL="6.10.10-200.fc40.x86_64"
2828
ARG SHA_HEAD_SHORT="dedbeef"
2929
ARG UBLUE_IMAGE_TAG="stable"

0 commit comments

Comments
 (0)