Thomas Duckworth
51c0706ceb
Stage to ci-artifacts, again
...
Should work now that we have the permissions.
See 46aee53994
2026-07-18 21:28:56 +10:00
Thomas Duckworth
630ff954a7
Revert "Stage to ci-artifacts per-pipeline"
...
This reverts commit b4b388cbfd
2026-07-07 19:19:40 +10:00
Thomas Duckworth
b4b388cbfd
Stage to ci-artifacts per-pipeline
...
This should be authenticated, and leverages a 3-day lifecycle rule that
deletes stale staged images.
2026-07-07 00:59:12 +10:00
Thomas Duckworth
c736a64956
Stage to the kde-linux bucket instead
...
It doesn't seem to have permissions to download
from the ci-artifacts bucket.
2026-07-04 23:42:58 +10:00
Thomas Duckworth
57cb1b403f
Stage to ci-artifacts bucket rather than kde-linux
...
Clean up the paths a bit and leverage the pre-existing 3 day
lifecycle rule in ci-artifacts that will delete stale artifacts.
Implement support for transfers between buckets in publisher, with
explicit source and destination URLs.
2026-07-04 22:06:07 +10:00
Bhushan Shah
9a46a0ec07
upload: fix permissions for uploaded files
2026-07-03 19:51:15 +05:30
Thomas Duckworth
8748d74db0
Ensure publishing is safe
...
Ensures we can't have two publish jobs running at the same time that
point to the same staging directory. Also ensures that publish will
immediately exit if there's nothing to stage, so we aren't vacuuming
prematurely.
2026-07-03 13:14:37 +00:00
Thomas Duckworth
63a164f975
Explicitly set an empty sysupdate pubkey in staging
...
Otherwise we end up passing the literal string $SYSUPDATE_PUBKEY_B64, the openQA worker tries to decode it, and it dies.
2026-07-03 10:57:40 +00:00
Thomas Duckworth
df6899e791
Fix secure file download for image staging
...
Download secure files before staging builds, so mkosi can embed the
public key into the image again, and so it can import the public key for
us. Also explicitly create the GPG homedir again and import the public
key in the publish step because mkosi won't have created it there.
2026-07-03 10:29:33 +00: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
Harald Sitter
3ca74d152d
upload: move raw and torrent to correct subdir
2026-05-08 23:20:13 +02:00
Harald Sitter
d6992c65d2
upload: rejigger upload-tree
...
this should bring it in alignment with the vacuum-v3 handling and fix
the sha256sums location coming out of that to match our expectation.
hopefully making the pipeline green again
2026-05-08 22:47:02 +02:00
Harald Sitter
a533d8b954
upload: put desync into path
...
should make it also available for the vacuum helper
2026-04-22 15:12:04 +02:00
Harald Sitter
df8c400a29
upload: build and run vacuum in one command
...
less verbose this way
2026-04-22 13:18:28 +02:00
Harald Sitter
08948c85e9
upload: prime vacuuming
...
everything seems to be in order now. let's clean up!
2026-04-15 21:42:01 +02:00
Harald Sitter
23ef25928d
upload: make sure we have an updated token before vacuuming
...
more ideally we should refresh the token on-demand but that is a larger
refactor
2026-04-15 14:51:40 +02:00
Harald Sitter
ef363735c4
add upload-vacuum-v3
...
cleans up the s3 and prepares for the repo v3 (which accounts for
editions in the repo path)
Closes #590
2026-04-15 14:04:27 +02:00
Hadi Chokr
4b43c460bc
Revert "Final MR Cleanup"
...
This reverts commit 2df0b40a9f
2026-02-25 12:59:29 +00:00
Hadi Chokr
2df0b40a9f
Final MR Cleanup
2026-02-25 11:12:43 +00:00
Hadi Chokr
be432ce532
Hotfix: Fix Relative Path
2026-02-25 10:37:02 +00:00
Hadi Chokr
acf2a82511
Hotfix a final time before reverting.
2026-02-25 10:19:00 +00:00
Hadi Chokr
c6b874ae3e
Hotfix: New Output Dir in upload.sh
2026-02-25 09:33:55 +00:00
Harald Sitter
dd93564cfb
upload: make all dirs
2026-02-20 04:18:36 +01:00
Harald Sitter
b03438d9c1
upload: activate desync chopping again
...
this time it should hopefully work :|
2026-02-19 13:18:10 +01:00
Harald Sitter
4344b8529e
upload: isolate upload testing into its own little job
...
it continues to not want to work :(
2026-02-18 23:12:04 +01:00
Harald Sitter
581ae8e722
debug--
2026-02-18 22:24:28 +01:00
Harald Sitter
9de6060960
debug++
2026-02-18 22:22:46 +01:00
Harald Sitter
339fdf783f
upload: syntax fix
2026-02-18 21:50:22 +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
59d8be68fb
upload: remove upload to storage for now
...
doesn't quite work yet
2026-02-17 06:14:12 +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
Harald Sitter
9309fbc2b1
upload: upload a desync store in addition to existing artifacts
...
this is a prototype and may explode. the idea here is that we'll have
one large chunk store from which we can feed all update needs
2026-02-17 02:38:16 +01: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
2d8dca8329
move sha256sums to sysupdate dir
...
systemd doesn't like subdir references in the sha256sums so we can't
have a single sums file in the root but rather need to have multiple
2025-08-21 01:15:10 +02:00
Harald Sitter
5653cd0db6
try to invoke scp correctly
2025-08-20 20:31:09 +02:00
Harald Sitter
d532605483
comment++
2025-08-20 19:51:07 +02:00
Harald Sitter
8c51beb068
shell glob please
2025-08-20 19:49:15 +02:00
Harald Sitter
c5be947571
upload sysupdate artifacts to a versioned directory
...
helps with implementation of a banana split
https://community.kde.org/KDE_Linux/Banana_Split
2025-08-20 18:54:27 +02:00
Harald Sitter
5ed5b5d752
yet more caibx hotfixing
2025-08-17 01:30:40 +02:00
Harald Sitter
c21666a893
don't put the caibx into the shasums
...
it breaks matching on the erofs somehow such that systemd downloads the
caibx thinking it is the erofs
2025-08-14 22:09:09 +02:00
Harald Sitter
3f455168d7
generate a desync index for the erofs
...
allows to desync... in theory anyway
2025-08-14 20:47:46 +02:00
Harald Sitter
ce0649c129
make upload more verbose
...
it gets stuck on the VM based CI and it's not clear why
2025-07-30 18:02:57 +02:00
Harald Sitter
64841b3ebb
files are owned by root because we sudo. take them back
2025-07-30 12:20:03 +02:00
Harald Sitter
d1a627607c
try to make sure the uploader has access
...
not sure why that is being weird after the VM transition. let's see if a chown fixes it
2025-07-30 11:50:04 +02:00
Harald Sitter
20bda00747
create an erofs of the rootfs as well
...
we might end up using it instead of a btrfs subvolume. first we need one
to experiment with though
2025-03-20 00:57:33 +00:00
Ian Monroe
1921a0140c
Revert "Use mkosi.output for build artifacts"
...
This reverts commit ea7ca55cd2 .
2024-12-16 11:34:28 -08:00
Bruno Pajdek
ea7ca55cd2
Use mkosi.output for build artifacts
...
mkosi already provides us with a nice default directory it puts artifacts in called `mkosi.output` if `--output-directory` isn't explicitly set. For some reason, it _is_ explicitly set to `.`, so it puts them in the source tree itself which pollutes it and gets messy real quick.
After build, the contents of the source tree are now
```
drwxrwxrwx 1 root root 100 Dec 15 15:18 .git
-rw-rw-rw- 1 root root 226 Dec 15 15:18 .gitignore
-rw-rw-rw- 1 root root 1.1K Dec 15 15:18 .gitlab-ci.yml
drwxrwxrwx 1 root root 370 Dec 15 15:18 LICENSES
-rw-rw-rw- 1 root root 337 Dec 15 15:18 README.md
-rw-rw-rw- 1 root root 128 Dec 15 15:18 REUSE.toml
-rwxrwxrwx 1 root root 824 Dec 15 15:18 addons.sh
-rwxrwxrwx 1 root root 1.7K Dec 15 15:18 bootstrap.sh
-rwxrwxrwx 1 root root 6.1K Dec 15 15:18 build.sh
-rwxrwxrwx 1 root root 2.9K Dec 15 15:18 build_docker.sh
-rwxrwxrwx 1 root root 427 Dec 15 15:18 in_docker.sh
drwxrwxrwx 1 root root 96 Dec 15 15:25 kde-linux.cache
drwxrwxrwx 1 root root 20 Dec 15 15:18 mkosi.cache
-rw-rw-rw- 1 root root 1.8K Dec 15 15:18 mkosi.conf
drwxrwxrwx 1 root root 420 Dec 15 15:18 mkosi.conf.d
drwxrwxrwx 1 root root 20 Dec 15 15:18 mkosi.extra
-rwxrwxrwx 1 root root 3.6K Dec 15 15:18 mkosi.finalize.chroot
drwxr-xr-x 1 root root 500 Dec 15 15:37 mkosi.output
-rwxrwxrwx 1 root root 5.2K Dec 15 15:18 mkosi.postinst.chroot
-rwxrwxrwx 1 root root 1.3K Dec 15 15:18 mkosi.prepare.chroot
drwxrwxrwx 1 root root 46 Dec 15 15:18 mkosi.repart
drwxrwxrwx 1 root root 6 Dec 15 15:18 mkosi.skeleton
-rwxrwxrwx 1 root root 742 Dec 15 15:18 permission-fix.sh
drwxrwxrwx 1 root root 30 Dec 15 15:18 strip
-rwxrwxrwx 1 root root 1.4K Dec 15 15:18 torrent-create.rb
-rwxrwxrwx 1 root root 796 Dec 15 15:18 update.sh
drwxrwxrwx 1 root root 94 Dec 15 15:18 upload-vacuum
-rwxrwxrwx 1 root root 1.6K Dec 15 15:18 upload.sh
```
And the contents of `mkosi.output` are
```
drwxr-xr-x 1 root root 206 Dec 15 15:28 kde-linux_202412151518
-rw-r--r-- 1 root root 173M Dec 15 15:25 kde-linux_202412151518.efi
-rw-r--r-- 1 root root 5.2G Dec 15 15:36 kde-linux_202412151518.raw
-rw------- 1 root root 55K Dec 15 15:37 kde-linux_202412151518.torrent
-rw-r--r-- 1 root root 14M Dec 15 15:25 kde-linux_202412151518.vmlinuz
-rw-r--r-- 1 root root 1.6G Dec 15 15:23 kde-linux_202412151518_debug-x86-64.tar.zst
-rw-r--r-- 1 root root 173M Dec 15 15:24 kde-linux_202412151518_live.efi
-rw-r--r-- 1 root root 3.0G Dec 15 15:36 kde-linux_202412151518_root-x86-64.tar.zst
```
2024-12-15 17:55:10 +00:00