CI: replace from-source libadwaita build with pinned Arch container
Some checks failed
check / check (push) Failing after 1m57s
Some checks failed
check / check (push) Failing after 1m57s
The dev/rc/release workflows rebuilt libadwaita from source inside an uncached Fedora container on every single run, because Ubuntu 24.04's packaged libadwaita was too old for gtk4 0.11's v4_12 feature. That from-source build broke repeatedly on drift (rust dep versions, libadwaita ABI, and finally a removed meson option), producing eight straight failed CI runs. Arch's repos already carry current gtk4/libadwaita/gtk4-layer-shell as prebuilt packages, and breadpad only targets BOS/Arch, so there's no reason to build anything from source. Swap the container base to a digest-pinned archlinux image (ci/Containerfile) with those packages installed via pacman, and extract the shared "build the image, run cargo inside it" logic into ci/build.sh so it isn't duplicated three times across the workflows. Cargo's registry/git/target caches persist in named docker volumes across runs. Also: - Add check.yml: clippy + test on feature/**/fix/** pushes, so lint/ build breakage surfaces before it reaches main and triggers a dev-track release. - Fix release.yml's tag trigger (tags-ignore) so an rc tag push no longer also spawns a skipped release.yml run alongside rc-release.yml. Verified locally: the container builds cleanly via pacman (no source compilation), and `cargo build --release --locked --workspace` inside it produces working breadpad/breadman binaries linked against libgtk4-layer-shell.so.0 and libadwaita-1.so.0 respectively.
This commit is contained in:
parent
2b5ad272a5
commit
3225f49a93
7 changed files with 99 additions and 72 deletions
|
|
@ -69,13 +69,21 @@ cargo test --release --workspace
|
|||
|
||||
## CI
|
||||
|
||||
- `check.yml` — clippy + test, triggered on push to `feature/**`/`fix/**`.
|
||||
Fast-fail before anything reaches `main`.
|
||||
- `dev-release.yml` — triggered on push to `main`.
|
||||
- `rc-release.yml` — triggered on any `vX.Y.Z-rc.N` tag push.
|
||||
- `release.yml` — triggered on any other `v*` tag push, cuts the actual
|
||||
stable release.
|
||||
|
||||
All CI runs on a self-hosted runner; nothing runs automatically on plain
|
||||
commits or PRs beyond the track builds above. See
|
||||
All of these build inside a pinned Arch Linux container (`ci/Containerfile`,
|
||||
run via `ci/build.sh`) on a self-hosted runner — not the runner host's
|
||||
native environment. Arch's repos carry current `gtk4`/`libadwaita`/
|
||||
`gtk4-layer-shell` as prebuilt packages, so there's no from-source library
|
||||
build to go stale. The image is rebuilt (and re-cached by Docker) only when
|
||||
`ci/Containerfile` changes, so a plain push doesn't refetch or recompile
|
||||
the toolchain. Nothing runs automatically on plain commits or PRs beyond
|
||||
the jobs listed above. See
|
||||
[bread-ecosystem's docs/release-channels.md](https://git.breadway.dev/Breadway/bread-ecosystem/src/branch/main/docs/release-channels.md)
|
||||
for the full policy, including how a new product gets wired onto these tracks.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue