Commit graph

108 commits

Author SHA1 Message Date
renner
2cc0c8e95e
feat(ci): add retries for registry logins (#2369)
The retry function is lifted straight from our base images [1].

Shold make CI flakes a little less likely [2] as seen in [3].

[1]: 8301eaad96/justfile (L33-L53)
[2]: https://github.com/ublue-os/aurora/issues/2337
[3]: https://github.com/ublue-os/aurora/actions/runs/27338439302/job/80768647685
2026-06-11 20:14:17 +00:00
renner
d54013a04d
feat(ci): use chunkah for rechunking (#2349)
Chunkah is actively maintained and the algorithm seems to be more stable
for the layer plan which results in smaller sizes for weekly updates
compared to rpm-ostree. Although it looks like daily updates are
slightly bigger for the time being.

In the future there may be a way to consume previous build manifests as
well to further shrink down image sizes.

I am not deleting the old build-chunked-oci code yet, to make this PR
easier to revert in case we have to.

Rpm-ostree is basically the only blocker for rootless CI, which is
generally what we should be doing, PolP and all that. Now we only need
root privileges for bootc install. Althought to keep this PR more simple
I will implement this later.

It seems like bootc install needs more space now, not sure exactly why
that happens but seems to be related due to pruned /sysroot.

xref https://github.com/ublue-os/aurora/issues/2324

Co-authored-by: inffy <10782843+inffy@users.noreply.github.com>
2026-06-09 08:36:42 +00:00
renner
a361fd3718
fix(ci): add commit hash as org.opencontainers.image.revision label (#2340)
This label was previously created by the hhd/legacy-rechunker instead of
on the image build process. We are now using the build-chunked-oci and
in the near future chunkah which do not mess with the labels.

Our changelogs script expects this label to be present in order for the
commits since last release to show up.

fixes: https://github.com/ublue-os/aurora/issues/2338
2026-06-07 16:15:54 +00:00
renner
12415bbc3b
chore: explicitly set akmods flavor for testing stream (#2328)
We will not be doing betas anymore
2026-06-06 16:40:53 +00:00
renner
37fb86668c
feat(ci): add index point for multiple daily builds (#2285)
Currently we are tagging these:

```
latest
latest-44.20260531
latest-20260531
latest-44
44-44.20260531
44-20260531
```

and this PR will add:

```
latest-44.20260531.2
latest-20260531.2
44-44.20260531.2
44-20260531.2
```

and for stable:

```
stable
stable-44.20260531
stable-20260531
stable-daily
44.20260531
stable-daily-44.20260531
stable-daily-20260531
```

```
stable-44.20260531.1
stable-20260531.1
stable-daily-44.20260531.1
stable-daily-20260531.1
```

Today there has been no stable image released so it starts out with .1
but there has been a single latest image, so it bumps it to .2

Very much inspired by ublue-os/main's solution [1], but this
implementation has a bug where where it will find the first "missing"
POINT (not the highest!) in the tags.

This would falsely choose the wrong POINT in the case we delete a bad
image and there is a "gap".

For example, we have the images .1-3 already on the registry, then
delete .2 and this implementation would correctly choose the next image
as .4 (instead of .2) as it's not just a dumb while loop.

This is very much an edge case and makes the jq command quite cursed but
I think this should always be reliable.

This feature has been broken previously because we didn't tag the image
with an index point number so no matter how many images we have built
that day, it was always .1 in the various VESRION fields in os-release.

fixes: https://github.com/ublue-os/aurora/issues/1833

[1]: ef33e7ca96/Justfile (L239-L251)
2026-06-01 11:38:29 +00:00
renner
cb0758b9c5
fix(ci): switch back to just from homebrew (#2291)
The ubuntu 26.04 provided version is still too old, recently they
stabilized the --fmt flag [1]. This is consistent with the other
invokations and also allows us to have some whitespace between variable
definitions for example as they seemed to have changed that.

[1]: 21b3833bf0
2026-06-01 11:20:21 +00:00
renner
108482756a
feat(ci): preparation for ARM builds (#2275)
Co-authored-by: inffy <10782843+inffy@users.noreply.github.com>
2026-05-31 09:53:36 +03:00
renner
9a5d04fbd8
fix(ci): push production tags after signing (#2231)
* fix(ci): push production tags after signing

If the signing step fails, causes for this can be ghcr jank or a
sigstore outage and not testing our changes properly beforehand. Then we
have already pushed images to the registry with production tags that
users can update to.

The clients won't actually update to these images as we enforce
verification on the client side to pull images from ghcr.io/ublue-os/
only with a valid signature attached. Otherwise this leads to an "update
failed" on the users POV, which is very confusing. This has been a
longstanding issue across the org [1] [2] [3].

To workaround this, we push a tag to the registry first that we don't
care about and clients don't check against for updates. I chose the job
id because it always changes.

This also happens to get rid of the action we use for retries to
workaround ghcr jank, we were forced to do this in the past because the
old podman version we used at the time didn't have those features.

Using podman to push signatures and images at the same time is not
something that is viable at the moment unfortunately but is definitely
the approach we should be using once it works well.

This effort can be seen at [4]. Although we are likely hitting [5] here
where all layers get invalidated because of this bug. We are effectively
pushing full images/no shared layers every time we do podman push. Which
causes the overall push step in CI to take upwards of 20 minutes.

fixes: https://github.com/ublue-os/aurora/issues/2135

[1]: https://github.com/ublue-os/bazzite/pull/4902
[2]: https://github.com/ublue-os/main/issues/643
[3]: https://github.com/ublue-os/bazzite/issues/3044
[4]: https://github.com/containers/podman/issues/27796
[5]: https://github.com/ublue-os/aurora/pull/2199

Signed-off-by: renner <renner0@posteo.de>

* fix: cosign verify

It seems like cosign tries to verify all .sig files on the registry for
that digest, one of which is generated by cosign sign with a static key
and one is generated by actions/attest using an OIDC.

This exactly broke, which is what we have been using for the longest
time:

```
cosign verify --key cosign.pub ghcr.io/ublue-os/aurora:latest

Error: no matching attestations: expected key signature, not certificate
error during command execution: no matching attestations: expected key
signature, not certificate
```

And this currently works to verify the image, although it is of course
not the same thing as singing with the ublue cosign key.

This will not work going forward after this commit:

```
cosign verify \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-identity-regexp="github.com/ublue-os/aurora/.github/workflows/*" \
  ghcr.io/ublue-os/aurora:latest
```

Signed-off-by: renner <renner0@posteo.de>

* feat: use staging for the temporary tag

This is just a minor cosmetic thing and recudes the amount of tags we
have because it's static and not changing unlike the run id.

Signed-off-by: renner <renner0@posteo.de>

* fix: use empty string by default for temporary tag

Signed-off-by: renner <renner0@posteo.de>

* fix: don't use signing config

Or else we are getting this error with new cosign 3.X.X

```
Error: must provide --new-bundle-format or --bundle where applicable
with --signing-config or --use-signing-config error during command
```

Signed-off-by: renner <renner0@posteo.de>

* chore: bump cosign-installer to v4.1.2

* chore: move oras install to beginning as well

if this fails at the beginning because of jank then it's not so bad

* fix(ci): make sbom signing work

```
Error: error getting signing config from TUF: error setting TUF options:
error setting TUF mirror: error reading remote.json: open
/home/runner/.sigstore/root/remote.json: permission denied
```

---------

Signed-off-by: renner <renner0@posteo.de>
2026-05-30 17:37:58 +00:00
renner
5d584361fe
feat(ci): stop building stable-daily images (#2208)
* feat(ci): stop building stable-daily images

These do not make super much sense, this is in preparation for the
testing branches so we don't build too many images.

We will still build stable images in PRs to find out if things are
broken on those images only.

To not break existing users, point this to `:stable` instead,
effectively lying about the cadence now. We have to do it this way
because stable-daily has ZFS and `:latest` doesn't to avoid breaking
that use case. In the future when we have removed ZFS we can point this
to `:latest`.

* fix: only publish :stable on schedule

We do not want to publish stable on every PR merge

---------

Co-authored-by: inffy <10782843+inffy@users.noreply.github.com>
2026-05-30 19:03:41 +02:00
renner
a3d754d46e
feat(just): replace beta with testing stream (#2251)
We will not have a beta stream in the future, it will just be called
testing.
2026-05-22 18:08:14 +02:00
renner
f7b1854b2e
feat(ci): add bootc install recipe (#2215)
This makes it easier to test changes that ideally need to be tested on a
fresh system. This is basically copy pasted from Zirconium.

Not uploading the image here as an artifact, I don't think this is too
useful and a bunch of work to resize to make it not suck to download.
But we should still get alerted when we change things that break bootc
install for whatever reason.
2026-05-16 21:09:29 +00:00
renner
250a2d0dd1
feat(ci): avoid intermediary disk writes with --layers (#2007)
This should speed up builds a bit as layers are only commited once to
disk instead of for every instruction in the Containerfile.
2026-05-14 13:53:52 +00:00
Juha Uotila
62605f2aba
fix(ci): fix correct image tag 2026-05-11 23:10:01 +03:00
inffy
099c167e2d
Merge pull request #2189 from renner0e/metadata-fixes
chore: add more artifacthub metadata
2026-05-10 16:02:49 +00:00
renner
0c8ac6fa88
chore: add more artifacthub metadata 2026-05-10 17:26:48 +02:00
renner
c86fe8760d
feat: add chunkah to justfile
We can easily experiment with this now and implement the rest when it
makes sense. This also unblocks rootless CI.

We need /ostree (which is a symlink to /sysroot/ostree) to exist or else
things break.
2026-05-10 16:36:00 +02:00
renner
cf03077ceb
fix(ci): generate SBOM after rechunking
Because we are generating our SBOMs before rechunking, we still have
leftover ostree objects which are getting picked up by syft and causes
changelogs to report wrong versions of packages.

fixes: https://github.com/ublue-os/aurora/issues/2077
2026-05-09 17:41:39 +02:00
renner
61c933a21d
chore: bump stable to f44 2026-05-08 17:41:58 +02:00
renner
6668764606
chore: drop beta/latest compatibility tag 2026-05-08 17:41:38 +02:00
renner
de8a17af3a
Merge branch 'beta' into promote-beta-to-main44 and resolve conflicts 2026-05-08 17:36:42 +02:00
Alex Meyer
5526112293
fix(beta): make sbverify check not fail if missing (#2157) 2026-05-06 05:12:10 +00:00
renner
037fe6533f
feat(ci): introduce temporary compatibility tag for f44 (#2107)
* feat(ci): introduce temporary compatibility tag for f44

Instead of having 2 workflows for building beta and latest, which will
produce functionally the same image, we have one workflow instead.
Latest workflow will tag beta images.

* trigger latest workflow on beta
2026-04-28 11:07:02 +03:00
renner
1215fca6d1 feat(ci): keyless OIDC verification for get-aurora-dev/common (#2095)
We are dealing with less long-lived keys now and we are supposed to use
this more modern way of signing our artifacts anyway where we can.

Sister PR to: https://github.com/get-aurora-dev/common/pull/158
2026-04-26 18:57:19 +02:00
renner
7b684ade56
feat(ci): keyless OIDC verification for get-aurora-dev/common (#2095)
We are dealing with less long-lived keys now and we are supposed to use
this more modern way of signing our artifacts anyway where we can.

Sister PR to: https://github.com/get-aurora-dev/common/pull/158
2026-04-26 14:55:40 +00:00
renner
53b751154e
feat(ci): rolling dnf cache (#2031)
Due to the nature of these caches being immutable (hihi) we can only
initially create caches with a certain key and can't update them with
fresh packages, this means they would get stale after a certain time. To
workaround this we restore from cache x and write and publish to cache
y, this has the drawback that this growth will never stop as we don't
delete old and unused packages residing inside the cache. This is not a
super big issue as the vast majority of packages don't change too often
but is still an annoyance.

As per the eviction policy [1], caches not accessed for 7 days will be
deleted automatically. This should result in a cycle where a scheduled
stable (or other manually triggered) workflows will create new cache
that will be used by all workflows until the next one is created again.

With this change, manual intervention should never be needed while
always having a fresh cache.

This also addresses that the aurora-dx-nvidia-open image got falsely
recognized as aurora-dx and attempted to write cache previously.

[1]: https://docs.github.com/en/actions/reference/workflows-and-actions/dependency-caching#usage-limits-and-eviction-policy
2026-04-10 03:30:58 +00:00
renner
33f5915395
feat: only pull when image actually exists
We need to check if the previous build was actually made with
rpm-ostree, otherwise this isn't going to do anything, implemented like
how upstream checks for this, see the comment.
2026-04-04 00:32:22 +02:00
renner
bde32f5f38
feat: add capability to manually trigger a fresh rechunking plan
Over time the layer plan due to reuse of the previous build's rechunking
plan might become undesirable/inefficient or due to bugs in rpm-ostree
itself that would trigger issues in the rechunker during the build might
force us to reset the layer plan where we do not consume our previous
build.
2026-04-04 00:32:22 +02:00
renner
a9607a2e4f
feat(ci): on rechunk consume previous build
Currently we compose a fresh rechunked image every build. This is not
ideal for image layer difference reduction and thereforce update sizes
as we do not take the rechunking plan/package layout from the previous
build (that users will likely have downloaded) into account.

When we have a new release of rpm-ostree we can replace most of the
pulling logic here with the new `--previous-build` flag.
2026-04-04 00:31:15 +02:00
renner
cb8bbcc020
chore: remove things related to legacy-rechunk 2026-04-03 21:39:03 +02:00
Dylan M. Taylor
7c5cd133e9
chore: bump Fedora to 44 (#1994)
* chore: bump Fedora to 44

* chore: simplify Containerfile.in ARG defaults
2026-04-03 21:34:39 +02:00
renner
2d1b039237
chore(beta): adjust fedora version logic for beta in rechunker (#1972)
* chore(ci): remove akmods check for fedora version (#1966)

This is unnecessary and doesn't work all that well, caching is not super
well implemented anyway. Setting the fedora version per image tag
statically works just fine and if we were to set some version that is
not yet available then it will simply fail a couple seconds later on the
cosign verification or akmods image pull.

* chore(beta): adjust fedora version logic for beta in rechunker
2026-03-28 21:59:02 +02:00
renner
89aed616a2
chore(ci): remove akmods check for fedora version (#1966)
This is unnecessary and doesn't work all that well, caching is not super
well implemented anyway. Setting the fedora version per image tag
statically works just fine and if we were to set some version that is
not yet available then it will simply fail a couple seconds later on the
cosign verification or akmods image pull.
2026-03-27 19:42:32 +00:00
renner
aab5038c5d
fix(ci): make cache use proper fedora version (#1961)
This always defaulted to latest, which resolves to F43 currently,
meaning F44 beta images will never make their own cache otherwise.
2026-03-25 21:24:47 +01:00
renner
a3cb401ffd
fix(ci): actually hardcode the cache restore key to aurora-dx (#1956)
We are writing cache to the proper location but not adjusting the
restore keys properly, i.e. aurora wants to look for cache at aurora
even tho we are purposefully only allowing aurora-dx cache to be
created.
2026-03-25 21:24:47 +01:00
renner
d7fd6e4c56
fix(ci): be smarter about DNF package caching (#1952)
Currently we are very inefficient with our cache usage as every image
has it's own cache where most of the packages are the same across
variants anyway. See 973333f.

This should fix a couple problems around this as we are now also
considering the Fedora version in the cache key and only allowing one
blessed image to create cache. Which is why I decided to implement this
into the Justfile even tho this is only needed when running from github
as it just makes things easier to troubleshoot.

aurora-dx makes the most sense here as that is the heaviest image. We
don't need a separate nvidia image cache as the biggest RPMs exclusive
to that variant are cached in akmods anyway and don't have to be
downloaded.

Only allowing cache to be created at all on workflow_dispatch and on
schedule happens to go hand in hand with the limitation/design of the
cache action as we only build images from the main branch in those two
cases, rest is merge queue, which also happens to address the
"infighting" across stable and latest builds when they kick off at the
same time.

This should make it easier going forward especially when we take future
possible ARM, testing images or any other reason for our matrix to get
bigger into consideration.
2026-03-25 20:21:10 +01:00
renner
63c903ae17
fix(ci): make cache use proper fedora version (#1961)
This always defaulted to latest, which resolves to F43 currently,
meaning F44 beta images will never make their own cache otherwise.
2026-03-25 18:05:08 +00:00
renner
6c38d843ab
fix(ci): actually hardcode the cache restore key to aurora-dx (#1956)
We are writing cache to the proper location but not adjusting the
restore keys properly, i.e. aurora wants to look for cache at aurora
even tho we are purposefully only allowing aurora-dx cache to be
created.
2026-03-24 17:54:26 +00:00
renner
50ba0fcd2d
fix(ci): be smarter about DNF package caching (#1952)
Currently we are very inefficient with our cache usage as every image
has it's own cache where most of the packages are the same across
variants anyway. See 973333f.

This should fix a couple problems around this as we are now also
considering the Fedora version in the cache key and only allowing one
blessed image to create cache. Which is why I decided to implement this
into the Justfile even tho this is only needed when running from github
as it just makes things easier to troubleshoot.

aurora-dx makes the most sense here as that is the heaviest image. We
don't need a separate nvidia image cache as the biggest RPMs exclusive
to that variant are cached in akmods anyway and don't have to be
downloaded.

Only allowing cache to be created at all on workflow_dispatch and on
schedule happens to go hand in hand with the limitation/design of the
cache action as we only build images from the main branch in those two
cases, rest is merge queue, which also happens to address the
"infighting" across stable and latest builds when they kick off at the
same time.

This should make it easier going forward especially when we take future
possible ARM, testing images or any other reason for our matrix to get
bigger into consideration.
2026-03-23 17:26:57 +00:00
renner
096b890dee
feat(ci): enable zstd:chunked compression (#1951)
* feat(ci): enable zstd:chunked compression

https://github.com/projectbluefin/common/issues/239

* fix: only use zstd compression for artifacts

The old podman version we use on the 24.04 runners seems to be really
slow with pushing zstd:chunked compressed images (to tarballs), we are
only using the newer podman version from brew when we actually push
images to the registry. For testing PRs this is good enough.

This makes the Exporting to OCI Archive step take 1m30s again and 4m for
DX, with :chunked it took 4m and 7m respectively.
2026-03-23 15:46:29 +00:00
renner
d707c687b0
fix(beta): make docker able to pull the image (#1934)
* fix(beta): make docker able to pull the image

https://docs.docker.com/engine/storage/drivers/overlayfs-driver/#how-the-overlay2-driver-works

* fix(beta): consolidate shell scripts in aurora-config layer

It doesn't make sense for a shell script which is just a couple KiB big
to get it's own dedicated layer.
2026-03-19 17:59:18 +00:00
renner
c36243a4db
feat: rechunk with rpm-ostree (#1476)
* feat: rechunk with rpm-ostree

The legacy rechunker is basically unmaintained, this is a much safer
option to reduce our (delta) image size.

https://coreos.github.io/rpm-ostree/build-chunked-oci/

We can further reduce the layer diff by utilizing --previous-build in
the next rpm-ostree release. It still has a couple problems in the
current release in combination with non-rpm layers.

https://github.com/coreos/chunkah is very early in development, don't
bother for now.

* fix: handle dance regarding stable, stable-daily

* chore: add horrible workaround because of hhd-dev/rechunk

* fix: for layer annotations not being pushed

We need a newer podman version than ubuntu 24.04 provides,
homebrew is the most elegant solution.

We need the layer annotations for the rpm-ostree rechunker so that
updates are more efficient.

workaround for:
https://github.com/containers/podman/issues/27796

* feat: assign layers to files we download

* chore: autostart rechunker-group-fix

* fix: don't do beta tag logic

* chore: only run when deployed with ostree

so this doesn't run on the ISO etc will need to be changed on composefs
native backend.
2026-03-17 14:13:59 +00:00
Adam Fidel
bdbbac22c1
chore: bump beta to 44 (#1869)
Co-authored-by: inffy <10782843+inffy@users.noreply.github.com>
2026-03-12 11:39:30 +02:00
renner
e1733489fa
chore(just): remove SUDO_DISPLAY (#1848)
This is super annoying if you don't have it set
2026-03-06 20:32:32 +01:00
renner
22d21c197c
feat(ci): use CPP preprocessor for akmods (#1799) 2026-02-27 19:51:50 +02:00
renner
419457c519
chore: stop hardcoding base image org + cleanup (#1733)
* chore: stop hardcoding base image org + cleanup

This is closer to what bluefin-lts is doing

* fix: make check happy
2026-02-08 15:00:48 +01:00
inffy
76ee3b1ea2
refactor fedora version logic (#1696) 2026-02-01 12:28:38 +00:00
renner
b4b2ceb2fd
fix(ci): verify akmods, brew, common with local key (#1665)
Previously we were fetching the public keys over the network, this method
was not resilient against bad actors who take over one of our
dependencies and publish malicious images with those keys.
2026-01-25 06:24:40 +00:00
renner
08ee28916f
feat: enable KDE 6.6 Beta builds (#1646)
* feat: enable KDE 6.6 Beta builds

latest kernel is nasty, so just going for the coreos-stable kernel now
on beta

The panel task manager widget config is not present in the beta packages

* fix: use latest kernel

ostree hotfix and sysext is fixed in 6.18.5

* fix firewall installation
2026-01-17 12:28:12 +00:00
renner
2678890be6
feat: FROM quay.io/fedora-ostree-desktops/kinoite (#1615)
* feat: FROM quay.io/fedora-ostree-desktops/kinoite

Instead of using the ublue-os/kinoite-main base image we would be using
the ones built by Timothée over at https://gitlab.com/fedora/ostree/ci-test

This is a good path forward for Aurora because:

- we no longer have to undo things we inherit from ublue-os/main
- less overall dependencies
- we can make more conscious decisions about what goes into the image
- it's easier now to build images on top of upcoming Fedora versions
  (even KDE nightly ones) or to base on top of potential future images
  that are more aligned with our goals and needs

This would come at the cost of maintaining most of what main did
previously ourselves.

* chore: remove ublue-os-akmods-addons

* chore: codecs from negativo

* feat: add flathub

* fix: fedora flatpak be gone

* feat: miscellaneous workarounds

* feat: CoreOS rescue boot generator

* feat: allow brew programs with sudo

* chore: re-add packages from main

* chore: remove packages we removed in main

* chore: renovate

there is no latest tag

* fix: remove explicit ublue akmods copr cleanup

already included with all the others

* chore: remove added fedora flatpak service

We don't need this

* fix(renovate): set proper tag

---------

Co-authored-by: inffy <10782843+inffy@users.noreply.github.com>
2026-01-13 04:52:08 +00:00
ubot-7274[bot]
8a7838b5eb
chore(deps): update ghcr.io/ublue-os/legacy-rechunk docker tag to v1.0.1 (#1579)
Co-authored-by: ubot-7274[bot] <217212047+ubot-7274[bot]@users.noreply.github.com>
2026-01-04 09:51:04 +02:00