Commit Graph
59 Commits
Author SHA1 Message Date
alvinlollo 9af4bc6c27 fix(tests): Fix yamlint compliance with whitespace
Tests / tests (push) Successful in 4m31s
2026-10-08 19:01:25 +11:00
alvinlollo 3c540f8bed fix(test): Fix yaml formatting
Tests / tests (push) Failing after 24s
2026-10-08 18:55:27 +11:00
alvinlollo 3f3bba05f3 fix(test): Fix formatting
Tests / tests (push) Failing after 25s
2026-10-08 18:53:51 +11:00
alvinlollo 01913f7682 feat(jobs): Output conflicting packages
Tests / tests (push) Failing after 2m24s
2026-10-08 18:46:47 +11:00
alvinlollo 1e8a1e3282 fix(ci): Update Qt version to latest
Upstream pin check / quickshell-pin (push) Successful in 46s
Tests / tests (push) Failing after 2m54s
2026-10-08 18:19:34 +11:00
alvinlollo 1bb6f8dddd ci: install archiso via private pacman config, not /etc/pacman.conf
Tests / tests (push) Successful in 4m8s
Writing stock core/extra over the host /etc/pacman.conf raced with the
tests workflow, which appends [cachyos]/[chaotic-aur] to the same file —
runs 132 and 133 ran concurrently on the runner, so either job could
corrupt the other's config mid-pacman.

Use 'pacman --config $(mktemp)' with stock core/extra instead: same
DNS-lookup reduction (only core/extra sync, no cachyos/chaotic), zero
writes to shared state. Verified on the runner: exit 0, only core/extra
synced, host /etc/pacman.conf mtime unchanged.
2026-10-07 11:22:12 +11:00
alvinlollo 0fbec83573 ci: retry pacman syncs and reset host pacman.conf before build
Tests / tests (push) Successful in 5m7s
Run 131 failed at 'pacman -Syu archiso jq' because the gateway
(192.168.1.1) intermittently drops UDP/53: cachyos.db and chaotic-aur.db
lookups hit libalpm's 10s resolve timeout while core/extra survived on
resolved's cache.

- build-iso: reset the host /etc/pacman.conf to stock core/extra first
  (tests.yaml leaves [cachyos]/[chaotic-aur] behind, and mkarchiso reads
  the profile's pacman.conf anyway), pre-warm mirror hostnames in the
  resolver cache, then retry pacman -Syu 5x with backoff.
- tests: wrap all three pacman -Syu calls in the same retry loop.

DNS-side redundancy was added on the runner separately (networkd drop-in
adds 1.1.1.1/8.8.8.8 next to the gateway).
2026-10-07 11:14:28 +11:00
alvinlollo a6c99b72d0 fix(ci): ensure /dev/fd symlinks exist for mkinitcpio and procsub
Tests / tests (push) Successful in 2m33s
The chroot's /dev only gains fd/stdin/stdout/stderr symlinks at boot, and
container executors often lack them, which breaks mkinitcpio's preset step
(pipes through /dev/stdin) and bash process substitution
("/dev/fd/63: No such file or directory").

- build-iso workflow: create the links in the executor's /dev, then mount a
  fresh devtmpfs and create them there too so the chroot tree is covered
  whether the executor's /dev is devtmpfs or a plain tmpfs
- customize_airootfs.sh: self-heal the same links inside the chroot
2026-10-06 14:53:16 +11:00
alvinlollo 7c601ca53d ci: log HTTP status and response body on ISO upload failure
Tests / tests (push) Failing after 2m30s
`curl -f` swallowed Gitea's error response, so the 3-attempt upload
failure on the 6330 MiB ISO reported nothing diagnosable. Capture the
status code via -w, print up to 2 KB of the response body for both
HTTP-level and transport-level failures, and clear upload.json at the
start of each attempt so a stale body cannot be misreported.
2026-09-27 18:33:04 +10:00
alvinlollo 83ed87f6a9 feat(iso): build end-4 deps in-image, ship end4-pC as default shell
Tests / tests (push) Successful in 2m35s
- customize_airootfs.sh stages dots-hyprland at /opt, runs ./setup
  install-deps as a throwaway builder, harvests the built packages into
  /opt/localrepo so pacstrap resolves them offline
- image ships its own [local-aur] (file:///opt/localrepo); CI and
  localrepo/update.sh keep that copy in sync; .gitignore covers work/,
  out/ and airootfs/opt/localrepo/
- alvin-install runs ./setup install --skip-alldeps on the target
- clone pctrade/end4-pC into /etc/skel/.config/quickshell, patch qsConfig
  ii -> end4-pC in the staged variables.lua (guarded + idempotent), and
  restore the fork after setup rsync --delete's ~/.config/quickshell
- ship user presets in skel, point fish `q` alias at end4-pC
- AGENTS.md: document the fourth package source and new gotchas
2026-09-27 10:31:49 +10:00
alvinlollo 5ffd5d0d82 ci: pin SOURCE_DATE_EPOCH, assert ISO uuid metadata, verify uploads
Tests / tests (push) Canceled after 1m42s
- Export SOURCE_DATE_EPOCH before mkarchiso so label, volume UUID,
  file mtimes and ext4 hash seed trace to one timestamp.
- Post-build step: assert blkid UUID of the ISO matches every
  /boot/<uuid>.uuid stem and archisosearchuuid= reference inside
  shipped boot configs, and that no %ARCHISO% placeholder remains.
- After upload: re-hash local ISOs, size-check API assets, download
  each back from the internal origin (bypasses traefik/Anubis) with
  percent-encoded filenames (iso_name contains a space), compare
  SHA-256. Definitive corruption (missing/size/sha mismatch) deletes
  the release; transport/API errors fail without deleting.
2026-09-23 22:32:08 +10:00
alvinlollo 0755091721 ci: add 3-try retry loop and timeouts for ISO release upload
Tests / tests (push) Successful in 2m17s
2026-09-22 22:06:33 +10:00
alvinlollo c71168371d fix(ci): upload plain ISO directly, skip zstd compression
Tests / tests (push) Successful in 2m22s
Compression was 5.3 GiB -> 5.2 GiB (98.6%) — negligible savings for
the extra build time. Upload the .iso directly as a release asset.
2026-09-21 19:56:07 +10:00
alvinlollo 9614192416 fix(ci): replace git LFS with release asset uploads
Tests / tests (push) Successful in 2m34s
The GITEA_TOKEN lacks 'lfs' scope, causing the LFS batch API to reject
uploads. Upload .zst files directly as release assets via the Gitea API
instead. This eliminates git-lfs, the separate releases repo, and all
LFS-related plumbing.
2026-09-20 13:24:37 +10:00
alvinlollo 2f1ac8d052 fix(ci): remove stderr suppression on push to diagnose LFS upload failure
Tests / tests (push) Successful in 2m21s
2026-09-20 10:24:51 +10:00
alvinlollo fa7eff8517 fix(ci): skip LFS smudge on releases repo clone
Tests / tests (push) Successful in 2m17s
2026-09-19 21:47:53 +10:00
alvinlollo 24f3f0f399 fix(ci): keep latest 2 releases instead of 3, clean up .releases-repo in always step
Tests / tests (push) Successful in 2m13s
2026-09-19 21:39:53 +10:00
alvinlollo ac59de33c8 fix(ci): move releases clone out of /tmp and free disk after LFS push
Tests / tests (push) Successful in 2m18s
2026-09-19 21:34:21 +10:00
alvinlollo da0855d341 Add --rm to remove source ISO
Tests / tests (push) Successful in 2m32s
2026-09-18 12:49:33 +10:00
alvinlollo 1090e3c75b fix(ci): ensure /dev/stdin exists for mkinitcpio and remove stock linux kernel
Tests / tests (push) Successful in 2m18s
- Add CI step to create /dev/stdin symlinks before ISO build
  (Docker/container environments may lack these, causing mkinitcpio to fail)
- Remove stock linux kernel from packages.x86_64 (linux-cachyos is the
  intended kernel; dual-kernel causes boot confusion and doubles build time)

Closes #X
2026-09-17 09:42:29 +10:00
alvinlollo 48b760d54e Update cleanup step name to match always() behavior
Tests / tests (push) Successful in 2m15s
2026-09-17 07:30:20 +10:00
alvinlollo 7f91c189db Mirror releases and seed README in AlvinArch-releases for discovery
Tests / tests (push) Successful in 2m22s
Create a matching git tag + release in alvinlollo/AlvinArch-releases next to
the main repo release, seed a short README there pointing back to
AlvinArch (workflow status badges on top), and extend release pruning to
the releases repo so both stay capped at 3.
2026-09-16 22:44:05 +10:00
alvinlollo 3816877b12 Fix ISO release uploads >3GB: zstd-compress and store via Git LFS in AlvinArch-releases
Release assets can no longer be attached directly (Gitea 500 on multi-GB
uploads). Compress each ISO with zstd, push the .zst into
alvinlollo/AlvinArch-releases (releases/<tag>/ on main) via Git LFS, verify
the LFS object server-side by OID, and create the release with a download
link plus SHA-256 checksums instead of a binary attachment.
2026-09-16 22:41:35 +10:00
alvinlollo 01c7c4e1fa Harden ISO build workflow: verifiable upload, cleanup on cancel/exit
Tests / tests (push) Successful in 2m21s
2026-09-16 16:37:25 +10:00
alvinlollo 75bc4b3f4c Fix ISO upload: use internal Gitea URL to bypass traefik timeout, add curl retries and 30min timeout
Tests / tests (push) Successful in 2m26s
2026-09-15 22:53:24 +10:00
alvinlollo 56c02781c2 Fix CI: drop incorrect -c flag, fix word splitting in tests
Tests / tests (push) Successful in 2m15s
build-iso:
- Remove -c flag (it takes a pacman.conf path, not a clean flag)
- Use absolute paths for mkarchiso with -- separator
- Copy local-aur.files* alongside local-aur.db*

tests:
- Fix word splitting: use 'while IFS= read -r' instead of
  'for f in ' for shell and YAML file loops
- Fix YAML find filter to use -not -path like shell find
2026-09-15 18:36:45 +10:00
alvinlollo 8e6e06155c Fix mkarchiso argument parsing in CI
Tests / tests (push) Successful in 2m15s
Use -- to separate flags from profile path, preventing mkarchiso
from misinterpreting the -w argument as the profile directory.
Also make rm -rf fail-safe with || true.
2026-09-15 18:23:24 +10:00
alvinlollo 22bae5f19b Use absolute paths for mkarchiso in CI
Tests / tests (push) Successful in 2m16s
mkarchiso requires absolute paths. Clean work dir explicitly and
pass PWD-based paths to -w, -o, and the profile directory.
2026-09-15 18:17:53 +10:00
alvinlollo 2dbbb3321d Use mkarchiso -c flag to clean work directory before build
Tests / tests (push) Successful in 2m32s
Replaces the separate rm step with the built-in -c flag which
forces mkarchiso to clean previous working directories first.
2026-09-15 18:11:35 +10:00
alvinlollo c4ce0b3534 Fix conflicting yq packages, add conflict check, rename workflow
Tests / tests (push) Successful in 2m22s
- Remove yq from packages.x86_64 (conflicts with go-yq)
- Add conflicting packages check step to tests workflow
- Rename 'Scheduled ArchISO Build' to 'Automated Arch ISO Build'
- Add --needed to all pacman install commands to suppress reinstalls
2026-09-15 17:49:28 +10:00
alvinlollo 3c592d1e84 Fix build-iso: copy localrepo to /tmp and patch pacman.conf for CI
Tests / tests (push) Successful in 2m23s
The local-aur repo in pacman.conf points to /home/alvin/alvinarch/localrepo
which only exists on the dev machine. In CI, copy the tracked .pkg.tar.zst
files to /tmp/localrepo and sed the path before building.
2026-09-15 17:43:05 +10:00
alvinlollo aad0ea2e03 Fix build-iso: use repo root as profile, not releng/
Tests / tests (push) Successful in 2m18s
The AlvinArch profile lives at the repo root, not in a releng/
subdirectory. The old path caused mkarchiso to fail with:
  ERROR: Profile '.../releng' does not exist!
2026-09-15 17:21:57 +10:00
alvinlollo 7f9cce549f Recognize localrepo and build-end4-deps.sh in package check 2026-09-15 15:37:44 +10:00
alvinlollo b76ff09624 Fix tests: check all repo matches for each package, not just first 2026-09-15 15:37:44 +10:00
alvinlollo 10d2c90c6f Fix tests: add core repo to allowed list, strip CR from pacman output 2026-09-15 15:37:44 +10:00
alvinlollo 8ea8699957 Fix tests: reset pacman.conf, correct CachyOS mirror URL format 2026-09-15 15:37:43 +10:00
alvinlollo 83f5dbae0d Fix tests: correct CachyOS and chaotic-aur mirror URLs, install keyrings properly 2026-09-15 15:37:43 +10:00
alvinlollo a4dbec69a1 Use archlinux runner natively - no Docker needed 2026-09-15 15:37:42 +10:00
alvinlollo 3b1ef02a40 Fix tests: remove all pacman-key calls (gpg-agent broken in Docker), TrustAll SigLevel 2026-09-15 15:37:42 +10:00
alvinlollo 8a61478b82 Fix tests: skip pacman-key lsign (gpg-agent broken in Docker), rely on SigLevel TrustAll 2026-09-15 15:37:42 +10:00
alvinlollo c6592dad04 Fix tests: proper CachyOS key import via pacman-key instead of broken URL 2026-09-15 15:37:41 +10:00
alvinlollo 8e0c7a96ce Fix tests: use default Arch mirrorlist, remove broken URL 2026-09-15 15:37:41 +10:00
alvinlollo fbb30d3e19 Fix package name: yamllint not python-yamllint on Arch 2026-09-15 15:37:40 +10:00
alvinlollo 843529d124 Fix tests: checkout on host, Arch work in docker run (Gitea runner Docker mode ENOTCONN bug) 2026-09-15 15:37:40 +10:00
alvinlollo 0794001d68 Rename Workflow from "Checks" to "Tests" 2026-09-15 15:37:39 +10:00
alvinlollo 04fcfb2dc6 Rename "Checks" to "Tests" 2026-09-15 15:37:39 +10:00
alvinlollo b696731132 Combine check-packages and syntax-check into one workflow 2026-09-15 15:37:38 +10:00
alvinlollo 56041a26e1 Fix yamllint: also disable line-length and new-line-at-end-of-file rules 2026-09-15 15:37:38 +10:00
alvinlollo 52e402a932 Fix yamllint: disable document-start rule in relaxed config 2026-09-15 15:37:37 +10:00
alvinlollo 63a3d6539d Test RPi runner with multi-arch archlinux image 2026-09-15 15:37:37 +10:00