Commit Graph

133 Commits

Author SHA1 Message Date
Harald Sitter
591e0bc1d1 build: don't trip over excess slashes 2026-08-03 16:54:22 +02:00
Harald Sitter
751d3be2d4 build: don't use go install
something is wonky with some server side cache that refuses to give the
latest ref. clone and build manually instead so we can be sure it is the
latest ref we are on
2026-08-03 15:50:40 +02:00
Harald Sitter
3f087c60b5 call artifact finder from bin path
I hope that's the right path anyway. this is all a bit ad-hoc
2026-08-03 09:32:22 +02:00
Harald Sitter
09eb9018fa obtain reference to buildstream artifacts using helper
should allow us to find the current artifacts even while they are not in
the main bucket
2026-08-02 07:14:36 +02:00
Harald Sitter
e06c2765e9 Adopt BuildStream
This is a first step towards the adoption of BuildStream as a technology
to produce the binaries needed for KDE Linux.
2026-08-01 00:15:02 +02:00
Hadi Chokr
81c5a33240 Ship /live as its own erofs partition on the ISO
Part of #578
2026-07-28 15:59:53 +02:00
Thomas Duckworth
cfc528f6d0 Reintroduce OpenQA testing
Integrates OpenQA image testing into CI.

Builds images once in the imaging job, then passes the resulting image and
update channel to the OpenQA pipeline in kde-linux/os-autoinst-distri-kdelinux.

For regular test builds, upload the built ISO and a temporary sysupdate tree
to ci-artifacts on storage.kde.org. The resulting IMAGE_URL, STAGING_CHANNEL_URL
and ephemeral update signing key are exported through the imaging job dotenv
artifact so OpenQA can boot the image and run upgrade tests against the build
under test.

For protected default-branch builds, stage the release artifacts under a
per-job staging prefix in the kde-linux bucket. OpenQA tests the staged ISO
and sysupdate channel before the publish job is allowed to run.

Publishing downloads the staged artifacts, uploads the public ISO/torrent and
sysupdate assets to files.kde.org, chunks and uploads the root to the desync
chunk store, then merges the staged S3 tree into the live tree on the bucket
and regenerates the published SHA256SUMS.
2026-07-03 04:57:34 +00:00
Hadi Chokr
db0bb13913 Make our Images comply with ISO9660 (.iso)
Changes:
- Included necessary services, binaries, and udev rules in the initrd for ISO9660 support
- systemd-boot boot counter in live.efi is being disabled (read-only ESP = scary warnings)
- Increased ESP size
- Created a hybrid ISO (ISO + valid GPT disk)
- Upload "only" the .iso (friendlier for less experienced users)
- Resolved my will to live

Signed-off-by: Hadi Chokr <hadichokr@icloud.com>

Resolves #287
2026-06-25 15:08:32 +02:00
Thomas Duckworth
071af6560f Revert the introduction of OpenQA testing
CI needs a bit of work before we can ship this properly. Revert it for the time being.

This reverts commit 164c0c67b4.
2026-06-22 22:48:27 +10:00
Thomas Duckworth
164c0c67b4 Introduce OpenQA testing
Integrates the OpenQA pipelines from kde-linux/os-autoinst-distri-kdelinux into CI. 

Splits the image upload logic into separate staging and publish steps, where staged builds are not exposed for public consumption until OpenQA tests pass.
2026-06-21 12:05:32 +02:00
Hadi Chokr
20f4506b48 Hotfix: Dont curl to stdout 2026-05-27 06:54:00 +02:00
Hadi Chokr
39327429c9 Hotfix: Point to correct artifact location 2026-05-27 06:44:15 +02:00
Hadi Chokr
e04ec1fd26 Use kde-builder tars instead of a pacman repo.
Signed-off-by: Hadi Chokr <hadichokr@icloud.com>
2026-05-26 18:01:53 +02:00
Harald Sitter
74b299a3b7 desync: print stats after making index 2026-04-29 19:21:02 +02:00
Harald Sitter
c734df9eec desync: use long options 2026-04-29 19:21:02 +02:00
Harald Sitter
8e07d551f7 increase chunk size substantially
Trying to improve #538 by having larger, and fewer chunks. This may run
at the cost of delta size but we'll have to see.

values are in kb
2026-04-29 19:21:02 +02:00
Harald Sitter
3cc058c642 use bespoke mirror
gives us better control over what and when to sync
2026-04-22 07:59:58 +02:00
Hadi Chokr
0d90bcdb08 Hotfix: delete debugroot after making the debug archive and move it out of tempfs-based /tmp to disk-based /var/tmp
This will unbrick the pipeline.
2026-04-03 16:46:05 +02:00
Hadi Chokr
629f02995d Figure out if space is really causing pipeline failures 2026-04-03 09:03:34 +02:00
Harald Sitter
a81c32aa5d typo-- 2026-03-23 23:23:42 +01:00
Hadi Chokr
3086ceda9b Final Hotfix 2026-02-25 18:30:28 +00:00
Hadi Chokr
ea050a7fa5 Hotfix: Upload Artifacts even when test fails 2026-02-25 16:43:51 +00:00
Hadi Chokr
bb550fc9cd Hotfix: Own as the Build User 2026-02-25 11:04:22 +01:00
Lorenz Wildberg
0a91cb11ef use mkosi.output for output directory 2026-02-25 05:49:43 +01:00
Harald Sitter
faed0b8797 build,upload: chop in upload not build
for practical reasons it seems more useful to chop during the upload
stage, as we can directly feed into the s3 from there
2026-02-18 21:20:42 +01:00
Harald Sitter
bcbb2ea254 build: do not wildcard files
we already know their exact name
2026-02-17 05:39:25 +01:00
Harald Sitter
8044e1a144 build: make sure the desync store exists 2026-02-17 04:01:22 +01:00
Harald Sitter
7c9d595c5f upload: moving chopping to build stage
it's where we make the caibx already and have desync installed
2026-02-17 03:04:23 +01:00
Nate Graham
adb21e7ac8 Turn on multilib and re-add steam-devices 2026-02-13 17:23:54 -07:00
Harald Sitter
47f9fdc015 erofs: build without packing magic
CI is still flakey for some reason. let's try without fragments and
ztailpacking. will increase the image size though :(
2025-12-18 05:21:19 +01:00
Harald Sitter
1979911e5a try different compression
zstd seems to have trouble passing right now and blocks the builds
2025-12-12 06:02:20 +01:00
Harald Sitter
e76a93966e erofs: be more verbose now that we log to a file 2025-12-12 04:45:37 +01:00
Harald Sitter
b72fd7b071 build: put erofs output into a file and artifact it 2025-12-11 00:56:15 +01:00
Harald Sitter
29f2a5ba19 Revert "build: disable erofs silencing to find out why it fails"
This reverts commit 90284efb06.
2025-12-11 00:53:46 +01:00
Harald Sitter
90284efb06 build: disable erofs silencing to find out why it fails 2025-12-11 00:18:31 +01:00
Nate Graham
79c829aae8 Move helper scripts from bin to lib
Also remove the _kde-linux prefix for the two scripts intentionally left
in bin.

Resolves #166
Resolves #391
2025-10-16 17:30:47 -06:00
Harald Sitter
2bdf10b4f5 bootstrap,build: pick packages from storage.kde.org instead of cdn.kde.org
storage is where few-consumers data will be exchanged moving forward
2025-10-12 11:53:27 -06:00
Harald Sitter
c6a74f19a5 hack: temporarily rebuild the pacman.conf
currently waiting for a ci image rebuild to land so this gets fixed
properly
2025-10-06 20:02:51 +02:00
Harald Sitter
fa35a74159 build: make sure the pacman cache is up to date
otherwise we may end up retrieving outdated materials
2025-10-06 20:02:51 +02:00
Harald Sitter
24eda82e5f consume caibx file via sysupdate
this is a bit dangerous but necessary for more efficient delta updates.

we must be very careful to avoid a bug in systemd caused by putting
foo.erofs.caibx into the sha256sums. so instead we have foo.caibx that
gets installed with the correct name by sysupdate

we still have the foo.erofs.caibx on the server for backwards compat,
but continue to not put it into the sha256sums
2025-09-17 14:17:24 +02:00
Harald Sitter
bbbf760eb4 use etc-factory instead of tmpfiles
tmpfiles are too inflexible as it turns out

Fixes #261
2025-08-30 15:53:26 +02:00
Harald Sitter
653e1baadd use absolute path to mtimer.json 2025-08-25 18:18:10 +02:00
Harald Sitter
9719237988 try to produce more consistent mtimes
this is a bit of a shot in the dark, but I believe we may have
unnecessary delta in our images caused by the rebuilding of software on
a daily basis. this would result in mtimes changing when the files
actually do not.

a tiny mtimer tool is meant to work around that by consuming an input
json file of mtimes+checksums and if mtimes change it will checksum the
affected file to verify it actually has changed in content as well.
assuming reproducible builds this should result in far less delta in the
erofs and by extension the delta download
2025-08-25 18:06:43 +02:00
Harald Sitter
9d764074bb align chunk sizes
this should make things more amazing. from my testing it looks like
aligning the sizes improves compression and improves caibx generation by
aligning chunk boundaries better.

in a test scenario of adding a single 128M random data file to /usr/lib
this brought the fragmentation from a couple thousand segments down to 8
(of which 5 are in the superblock and the new file appears as large
contiguous chunk delta). the actual download size is a 135M delta
2025-08-23 04:39:43 +02:00
Harald Sitter
652d836d11 don't keep the live efi around
we don't need it. it's already in the raw in case someone needs access
to it
2025-08-20 19:31:37 +02:00
Harald Sitter
7841052916 make a mock erofs addon
a null efi is not good enough for sysupdate
2025-08-19 23:48:03 +02:00
Harald Sitter
90d44c18a1 publish fake artifacts
in the hopes of getting upgrades listed again

the trouble appears to be that since we no longer create the tar or
erofs addon systemd-sysupdate considers the candidates not viable and
just ignores the new versions. by having mock artifacts I hope things
will work again

we'll need to invent some tech to eventually rotate the old artifacts
out of /system though
2025-08-19 23:12:02 +02:00
Harald Sitter
2c7b07b6b7 zstd 15 takes ages
let's just go with the default for now
2025-08-19 20:26:59 +02:00
Harald Sitter
dcff83c55f use correct separator for compression level 2025-08-19 19:26:57 +02:00
Harald Sitter
f9ccfd5935 erofs addon is no more
now always enabled
2025-08-19 19:10:03 +02:00