Compare commits

..

8 Commits

Author SHA1 Message Date
Niq Dudfield
fa4ad19f9b Merge branch 'dev' into nd-use-github-actions-cache-with-bug-fixes-from-s3-implementation-2025-11-24 2025-11-25 08:12:47 +07:00
Nicholas Dudfield
ee71cd74cf refactor: use GitHub API instead of git fetch for PR commit messages 2025-11-25 08:09:02 +07:00
Nicholas Dudfield
e2b7b18c1d fix: fetch PR commit message via GitHub API for matrix-setup [ci-nix-full-matrix]
The matrix-setup job was using github.event.head_commit.message which
is empty for PR events. Now fetches via API using the PR head SHA.
2025-11-25 08:02:26 +07:00
Nicholas Dudfield
525f96aa43 chore: bump macos cache version to 3 2025-11-25 07:48:14 +07:00
Nicholas Dudfield
430155587e chore: upgrade macos runner to xlarge (M2)
Upgrades macOS CI runner from macos-15 to macos-15-xlarge for faster
builds with more CPU cores.

Changes:
- runs-on: macos-15-xlarge (was: macos-15)

Benefits:
- M2 processor with more cores
- Faster compilation times
- Better ccache performance
2025-11-24 15:24:27 +07:00
Nicholas Dudfield
49c1e337e8 refactor: inline cache clearing into restore action
Consolidates cache clearing and restore into a single self-contained
action, eliminating the need for a separate clear-cache action.

Changes:
- Inline cache clearing logic directly into xahau-ga-cache-restore
- Delete xahau-ga-clear-cache action (no longer needed)
- Add additional-clear-keys input for clearing multiple keys
- Remove nd-experiment-overlayfs branch from workflow triggers

Benefits:
- Single action does everything (clear + restore)
- Simpler architecture (one action instead of two)
- Self-contained and easier to maintain
2025-11-24 15:21:22 +07:00
Nicholas Dudfield
c5972875c4 refactor: create generic cache restore action (DRY)
Consolidates cache clearing + restore logic into a single reusable
action to eliminate key synthesis duplication.

Changes:
- New xahau-ga-cache-restore action (wraps clear + restore)
- Integrates cache clearing directly into restore operation
- Eliminates separate cache clearing steps
- Cache keys built once in restore action (not duplicated)

Usage:
- ccache: two restore calls (main + current branch dual-cache)
- Conan: one restore call (single cache)
- Saves use actions/cache/save@v4 directly (no wrapper needed)

Benefits:
- DRY: cache keys no longer synthesized in multiple places
- Cleaner: cache clearing automatic during restore
- Simpler: one action call instead of two steps per cache
2025-11-24 15:15:44 +07:00
Nicholas Dudfield
f8bdb57f2e feat: improve ci caching with dual-cache system and api-based clearing
Implements enhanced caching strategy for GitHub Actions CI workflows
with efficient cache management and commit-message-driven controls.

Dual-cache system:
- Main branch: uses ~/.ccache-main (read-write)
- Feature branches: use ~/.ccache-current (read-write) + ~/.ccache-main
  as secondary_storage (read-only fallback)
- Feature branches only save new compilation artifacts, inheriting
  everything else from main branch cache
- Eliminates cache duplication across branches

Cache clearing via GitHub API:
- New xahau-ga-clear-cache reusable action
- [ci-ga-clear-cache] - Clear all caches for this job
- [ci-ga-clear-cache:ccache] - Clear only if key contains "ccache"
- [ci-ga-clear-cache:conan] - Clear only if key contains "conan"
- [ci-ga-clear-cache:gcc Debug] - Clear if key contains both (AND logic)
- Uses gh CLI with github.token (no additional credentials)
- Cache deletion happens before restore step

ccache improvements:
- Wrapper toolchain prevents Conan from overriding ccache settings
- Single cache directory approach with proper secondary_storage config
- Configuration applied AFTER cache restore (prevents stale config)
- Verbose build flag: [ci-ga-cmake-verbose]

Conan improvements:
- Configuration applied AFTER cache restore (prevents stale profile)
- Removed ineffective branch comparison logic for cache saves
- Fixed cache keys to use conanfile.py (not conanfile.txt)

Breaking changes:
- Cache version bumped to v3 (invalidates old caches)

Fixes #620 (ccache caches were empty)
Fixes #618 (conan not caching on feature branches)
2025-11-24 15:01:31 +07:00
4 changed files with 4 additions and 4 deletions

View File

@@ -15,7 +15,7 @@ env:
jobs:
checkout:
runs-on: [self-hosted, xahaud-build]
runs-on: [self-hosted, vanity]
outputs:
checkout_path: ${{ steps.vars.outputs.checkout_path }}
steps:

View File

@@ -4,7 +4,7 @@ on: [push, pull_request]
jobs:
check:
runs-on: [self-hosted, generic]
runs-on: ubuntu-latest
env:
CLANG_VERSION: 10
steps:

View File

@@ -18,7 +18,7 @@ jobs:
generator: bash ./hook/generate_sfcodes.sh
- target: hook/tts.h
generator: ./hook/generate_tts.sh
runs-on: [self-hosted, generic]
runs-on: ubuntu-latest
name: ${{ matrix.target }}
steps:
- name: Checkout repository

View File

@@ -14,7 +14,7 @@ concurrency:
jobs:
matrix-setup:
runs-on: [self-hosted, generic]
runs-on: ubuntu-latest
container: python:3-slim
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}