diff --git a/.github/workflows/iso-2-gitea-build.yml b/.github/workflows/iso-2-gitea-build.yml index 557f18f..4a97d87 100644 --- a/.github/workflows/iso-2-gitea-build.yml +++ b/.github/workflows/iso-2-gitea-build.yml @@ -248,22 +248,16 @@ jobs: # The suites run on a plain CachyOS VM (Plasma, no Steamify): the newest CachyOS ISO, installed once; # every block then starts from a fresh overlay of that VM. - # The CachyOS ISO (~3 GB), only the base of the suites' plain VM (not the Steamify ISO this run builds: that one - # goes to the other jobs as the artifact `iso`): cached per CachyOS release. - - name: CachyOS release - id: cachyos - run: | - rel="$(curl -fsL https://cachyos.org/download/ | grep -oE 'cachyos-desktop-linux-[0-9]+' | head -n 1)" - echo "release=${rel:?no CachyOS release found}" >> "$GITHUB_OUTPUT" - - name: Cache - the CachyOS ISO - uses: actions/cache@v4 + - uses: christopherhx/gitea-download-artifact@v4 with: - path: | - steamify-cachyos-dev/cachyos.iso - steamify-cachyos-dev/cachyos.iso.version - key: cachyos-iso-${{ steps.cachyos.outputs.release }} + name: iso + path: iso - - name: Plain CachyOS VM + # The suites test steamify.sh from a plain system, so the base VM is installed from the ISO this run built + # with its Steamify step skipped (VM_STEAMIFY=skip): the ISO's installer, kernels, packages and boot loader + # are tested, every block then starts from a fresh overlay of that VM. (The boot loader jobs test the + # ISO with Steamify installed.) + - name: Base VM from the new ISO env: CI: "1" VM_TIMEZONE: UTC @@ -273,9 +267,9 @@ jobs: run: | mkdir -p ~/.ssh ~/vms/pkg-cache ssh-keygen -q -t ed25519 -N "" -C steamify-vm -f ~/.ssh/steamify-vm_ed25519 + iso="$(ls "$GITHUB_WORKSPACE"/iso/*.iso | head -n 1)" cd steamify-cachyos-dev - ./get-iso.sh # does nothing when the cached ISO is the current release - VM_DIR="$HOME/vms/steamify-vm" scripts/vminstall.sh --iso cachyos.iso + VM_DIR="$HOME/vms/steamify-vm" scripts/vminstall.sh --iso "$iso" # Two suites at a time, 4 GB and 2 vCPUs each (vmsuite.sh). - name: vmtest.sh (every suite) diff --git a/AGENTS.md b/AGENTS.md index a9d05a9..9e2c4ad 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -121,7 +121,7 @@ Full write-up, with every trap: `steamify-iso-release` in steamify-cachyos-dev. - `.github/workflows/iso-2-gitea-build.yml` (Gitea, `on: push: tags: v*`, skipped on GitHub) runs four jobs for that tag: build the ISO, test it (steamify-cachyos-dev's `scripts/vmbootloadertest.sh --install`, one job per boot loader, parallel up to the runner's capacity; needs `/dev/kvm` on the runner and checks out steamify-cachyos-dev `main` and - steamify-cachyos at the ISO's version from the mirror), then, after those, the suites (`scripts/vmtest.sh cli menu hw installer toggles` on a plain CachyOS VM installed from the newest CachyOS ISO, two at a time), and only when all tests passed attach it to the mirror's release. The tag decides everything: Steamify version (`steamify-prepare.sh` + steamify-cachyos at the ISO's version from the mirror), then, after those, the suites (`scripts/vmtest.sh cli menu hw installer toggles` on a plain VM installed from the new ISO with `VM_STEAMIFY=skip`, two at a time), and only when all tests passed attach it to the mirror's release. The tag decides everything: Steamify version (`steamify-prepare.sh` takes `STEAMIFY_VERSION`), file name (`STEAMIFY_ISO_VERSION` -> `iso_version` in `profiledef.sh`), label (`STEAMIFY_BUILD_STAMP`), boot menu and `/etc/steammachine-iso-build`. The build reads no clock; without a tag everything says `local`. @@ -131,5 +131,5 @@ Full write-up, with every trap: `steamify-iso-release` in steamify-cachyos-dev. GitHub doesn't have, and the release with them. GitHub releases can't hold the ISO (2 GB per file). - Gitea needs `[repository.release] FILE_MAX_SIZE` above the ISO (413 otherwise) and the runner `container: privileged: true` (archiso mounts `/proc`); the workflow's `--privileged` option is ignored. -- Caches (`actions/cache`, the runner's cache server): pacman's package cache per job kind (build, test), the VMs' packages (`VM_CACHE`, `~/vms/pkg-cache`) and the CachyOS ISO for the suites, per release. Each job first installs only node and git, restores the caches, then installs the rest. +- Caches (`actions/cache`, the runner's cache server): pacman's package cache per job kind (build, test) and the VMs' packages (`VM_CACHE`, `~/vms/pkg-cache`), keys per ISO week. Each job first installs only node and git, restores the caches, then installs the rest. - CachyOS's own `Desktop ISO` workflow (`build.yml`) is removed here; the test job of iso-2-gitea-build.yml replaces it.