From a51ed8416224e15d17196584165f9fae71ec613f Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Sun, 17 May 2026 11:15:05 +0300 Subject: [PATCH] ci: cache apt packages and Homebrew downloads across Linux/macOS jobs Wires .github/actions/cache-apt-packages-action into the Linux jobs that sudo apt install (linux_ci, sanitized_ci, c2v_ci, cross_ci, docs_ci, gg_regressions_ci, module_docs_ci, other_ci, sdl_ci, websockets_ci, v_apps_and_modules_compile_ci, vsl_and_vtl_compile_ci), and adds an actions/cache step for ~/Library/Caches/Homebrew on the matching macOS jobs (macos_ci, cross_ci, v_apps_and_modules_compile_ci, vsl_and_vtl_compile_ci). Matrix jobs that span both OSes gate each cache step on runner.os so only the relevant package manager is hit. --- .github/workflows/c2v_ci.yml | 2 ++ .github/workflows/cross_ci.yml | 8 +++++++ .github/workflows/docs_ci.yml | 1 + .github/workflows/gg_regressions_ci.yml | 1 + .github/workflows/linux_ci.yml | 3 +++ .github/workflows/macos_ci.yml | 7 ++++++ .github/workflows/module_docs_ci.yml | 1 + .github/workflows/other_ci.yml | 1 + .github/workflows/sanitized_ci.yml | 6 +++++ .github/workflows/sdl_ci.yml | 1 + .../v_apps_and_modules_compile_ci.yml | 14 +++++++++++ .github/workflows/vsl_and_vtl_compile_ci.yml | 24 +++++++++++++++++++ .github/workflows/websockets_ci.yml | 1 + 13 files changed, 70 insertions(+) diff --git a/.github/workflows/c2v_ci.yml b/.github/workflows/c2v_ci.yml index 577b2b49d..681803f80 100644 --- a/.github/workflows/c2v_ci.yml +++ b/.github/workflows/c2v_ci.yml @@ -32,6 +32,7 @@ jobs: timeout-minutes: 30 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make && ./v symlink @@ -77,6 +78,7 @@ jobs: VTMP: /tmp steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make && ./v symlink diff --git a/.github/workflows/cross_ci.yml b/.github/workflows/cross_ci.yml index 2bf27d545..b7d0b8bbb 100644 --- a/.github/workflows/cross_ci.yml +++ b/.github/workflows/cross_ci.yml @@ -30,6 +30,13 @@ jobs: - uses: actions/checkout@v6 with: fetch-depth: 10 + - name: Cache Homebrew downloads + uses: actions/cache@v4 + with: + path: ~/Library/Caches/Homebrew + key: brew-cross-macos-${{ hashFiles('.github/workflows/cross_ci.yml') }} + restore-keys: | + brew-cross-macos- - name: Build V run: make -j4 && ./v symlink @@ -71,6 +78,7 @@ jobs: - uses: actions/checkout@v6 with: fetch-depth: 10 + - uses: ./.github/actions/cache-apt-packages-action - name: Build v run: make -j4 && ./v symlink diff --git a/.github/workflows/docs_ci.yml b/.github/workflows/docs_ci.yml index 4c7da3bed..2711359c8 100644 --- a/.github/workflows/docs_ci.yml +++ b/.github/workflows/docs_ci.yml @@ -26,6 +26,7 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make - name: Install dependencies (some examples show how to use sqlite and the x11 clipboard) diff --git a/.github/workflows/gg_regressions_ci.yml b/.github/workflows/gg_regressions_ci.yml index 33701af97..2182bdb95 100644 --- a/.github/workflows/gg_regressions_ci.yml +++ b/.github/workflows/gg_regressions_ci.yml @@ -32,6 +32,7 @@ jobs: steps: - name: Checkout V uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build local v run: make -j4 && ./v symlink diff --git a/.github/workflows/linux_ci.yml b/.github/workflows/linux_ci.yml index 66cbab294..1c4ae30b8 100644 --- a/.github/workflows/linux_ci.yml +++ b/.github/workflows/linux_ci.yml @@ -32,6 +32,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build v run: make -j4 && ./v symlink - name: Build v with -prealloc @@ -90,6 +91,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: All code is formatted @@ -143,6 +145,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: All code is formatted diff --git a/.github/workflows/macos_ci.yml b/.github/workflows/macos_ci.yml index 7084f6e67..64d1588b6 100644 --- a/.github/workflows/macos_ci.yml +++ b/.github/workflows/macos_ci.yml @@ -35,6 +35,13 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - name: Cache Homebrew downloads + uses: actions/cache@v4 + with: + path: ~/Library/Caches/Homebrew + key: brew-${{ matrix.os }}-${{ hashFiles('.github/workflows/macos_ci.yml', 'ci/macos_ci.vsh') }} + restore-keys: | + brew-${{ matrix.os }}- - name: Build V run: make -j4 && ./v symlink - name: Test symlink diff --git a/.github/workflows/module_docs_ci.yml b/.github/workflows/module_docs_ci.yml index 57e816d48..6ac5f6eb9 100644 --- a/.github/workflows/module_docs_ci.yml +++ b/.github/workflows/module_docs_ci.yml @@ -34,6 +34,7 @@ jobs: timeout-minutes: 20 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: Update packages, before running apt install diff --git a/.github/workflows/other_ci.yml b/.github/workflows/other_ci.yml index 4fffc1eb0..ee41b3213 100644 --- a/.github/workflows/other_ci.yml +++ b/.github/workflows/other_ci.yml @@ -114,6 +114,7 @@ jobs: - uses: actions/checkout@v6 with: fetch-depth: 10 + - uses: ./.github/actions/cache-apt-packages-action - name: Build v run: make -j4 && ./v symlink diff --git a/.github/workflows/sanitized_ci.yml b/.github/workflows/sanitized_ci.yml index ae2ff17bb..881b98617 100644 --- a/.github/workflows/sanitized_ci.yml +++ b/.github/workflows/sanitized_ci.yml @@ -90,6 +90,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: V doctor @@ -125,6 +126,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: V doctor @@ -160,6 +162,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: V doctor @@ -227,6 +230,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: V doctor @@ -263,6 +267,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: V doctor @@ -300,6 +305,7 @@ jobs: VTEST_SHOW_LONGEST_BY_TOTALTIME: 3 steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make -j4 && ./v symlink - name: V doctor diff --git a/.github/workflows/sdl_ci.yml b/.github/workflows/sdl_ci.yml index 2fc1f3a52..2af8fa9f6 100644 --- a/.github/workflows/sdl_ci.yml +++ b/.github/workflows/sdl_ci.yml @@ -31,6 +31,7 @@ jobs: VFLAGS: -cc tcc steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build V run: make && sudo ./v symlink diff --git a/.github/workflows/v_apps_and_modules_compile_ci.yml b/.github/workflows/v_apps_and_modules_compile_ci.yml index 0bbd4745a..0733903b4 100644 --- a/.github/workflows/v_apps_and_modules_compile_ci.yml +++ b/.github/workflows/v_apps_and_modules_compile_ci.yml @@ -31,6 +31,20 @@ jobs: steps: - uses: actions/checkout@v6 + - name: Cache apt packages + if: runner.os == 'Linux' + uses: ./.github/actions/cache-apt-packages-action + + - name: Cache Homebrew downloads + if: runner.os == 'macOS' + uses: actions/cache@v4 + with: + path: ~/Library/Caches/Homebrew + key: brew-${{ matrix.os }}-v_apps-${{ hashFiles('.github/workflows/v_apps_and_modules_compile_ci.yml') }} + restore-keys: | + brew-${{ matrix.os }}-v_apps- + brew-${{ matrix.os }}- + - name: Build V id: build run: make && sudo ./v symlink diff --git a/.github/workflows/vsl_and_vtl_compile_ci.yml b/.github/workflows/vsl_and_vtl_compile_ci.yml index 33589723d..639931eb9 100644 --- a/.github/workflows/vsl_and_vtl_compile_ci.yml +++ b/.github/workflows/vsl_and_vtl_compile_ci.yml @@ -32,6 +32,18 @@ jobs: VFLAGS: -no-parallel steps: - uses: actions/checkout@v6 + - name: Cache apt packages + if: runner.os == 'Linux' + uses: ./.github/actions/cache-apt-packages-action + - name: Cache Homebrew downloads + if: runner.os == 'macOS' + uses: actions/cache@v4 + with: + path: ~/Library/Caches/Homebrew + key: brew-${{ matrix.os }}-vsl-${{ hashFiles('.github/workflows/vsl_and_vtl_compile_ci.yml') }} + restore-keys: | + brew-${{ matrix.os }}-vsl- + brew-${{ matrix.os }}- - name: Build V id: build run: make && sudo ./v symlink @@ -68,6 +80,18 @@ jobs: TERM: xterm steps: - uses: actions/checkout@v6 + - name: Cache apt packages + if: runner.os == 'Linux' + uses: ./.github/actions/cache-apt-packages-action + - name: Cache Homebrew downloads + if: runner.os == 'macOS' + uses: actions/cache@v4 + with: + path: ~/Library/Caches/Homebrew + key: brew-${{ matrix.os }}-vtl-${{ hashFiles('.github/workflows/vsl_and_vtl_compile_ci.yml') }} + restore-keys: | + brew-${{ matrix.os }}-vtl- + brew-${{ matrix.os }}- - name: Build V id: build run: make && sudo ./v symlink diff --git a/.github/workflows/websockets_ci.yml b/.github/workflows/websockets_ci.yml index 6721bb543..5e1139138 100644 --- a/.github/workflows/websockets_ci.yml +++ b/.github/workflows/websockets_ci.yml @@ -28,6 +28,7 @@ jobs: VFLAGS: -cc tcc -no-retry-compilation steps: - uses: actions/checkout@v6 + - uses: ./.github/actions/cache-apt-packages-action - name: Build v run: | echo "$VFLAGS" -- 2.39.5