From 897fe82e94fb5ce096d533b4a1b0c9599365862f Mon Sep 17 00:00:00 2001 From: Alexander Kiselev Date: Fri, 6 Feb 2026 15:01:29 -0800 Subject: [PATCH] ci: fix Ghidra cache to include config dir, bump timeout to 90min The Ghidra cache was missing the config directory (config.yaml with install path), so doctor couldn't find the installation on cache hit and setup re-downloaded every time. Now caches both the Ghidra binary dir and config dir on all platforms. Bumped integration timeout to 90 minutes for first Windows cold run. Co-Authored-By: Claude Opus 4.6 --- .github/workflows/test.yml | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7c878e5..5af2289 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -44,10 +44,11 @@ jobs: - name: Run CLI tests run: cargo test --test e2e --test command_tests --test output_format_integration --verbose - # Job 2: Read-only integration tests (one bridge) - ~10-15 min + # Job 2: Read-only integration tests (one bridge) + # First Windows run is slow (~60min) due to Ghidra headless JVM; cached runs ~15-20min readonly-integration: runs-on: ${{ matrix.os }} - timeout-minutes: 60 + timeout-minutes: 90 strategy: fail-fast: false matrix: @@ -68,14 +69,17 @@ jobs: - name: Cache Rust uses: Swatinem/rust-cache@v2 - - name: Cache Ghidra + - name: Cache Ghidra installation and config uses: actions/cache@v4 with: path: | ~/.local/share/ghidra-cli + ~/.config/ghidra-cli ~/Library/Application Support/ghidra-cli + ~/Library/Preferences/ghidra-cli ~/AppData/Local/ghidra-cli - key: ghidra-${{ matrix.os }}-v3 + ~/AppData/Roaming/ghidra-cli + key: ghidra-${{ matrix.os }}-v4 - name: Cache Ghidra projects uses: actions/cache@v4 @@ -110,7 +114,7 @@ jobs: # Job 3: Mutation tests (parallel with job 2) - ~10-15 min mutation-integration: runs-on: ${{ matrix.os }} - timeout-minutes: 60 + timeout-minutes: 90 strategy: fail-fast: false matrix: @@ -131,14 +135,17 @@ jobs: - name: Cache Rust uses: Swatinem/rust-cache@v2 - - name: Cache Ghidra + - name: Cache Ghidra installation and config uses: actions/cache@v4 with: path: | ~/.local/share/ghidra-cli + ~/.config/ghidra-cli ~/Library/Application Support/ghidra-cli + ~/Library/Preferences/ghidra-cli ~/AppData/Local/ghidra-cli - key: ghidra-${{ matrix.os }}-v3 + ~/AppData/Roaming/ghidra-cli + key: ghidra-${{ matrix.os }}-v4 - name: Cache Ghidra projects uses: actions/cache@v4 @@ -173,7 +180,7 @@ jobs: # Job 4: Infrastructure tests (parallel with jobs 2+3) - ~8-10 min infrastructure: runs-on: ${{ matrix.os }} - timeout-minutes: 60 + timeout-minutes: 90 strategy: fail-fast: false matrix: @@ -194,14 +201,17 @@ jobs: - name: Cache Rust uses: Swatinem/rust-cache@v2 - - name: Cache Ghidra + - name: Cache Ghidra installation and config uses: actions/cache@v4 with: path: | ~/.local/share/ghidra-cli + ~/.config/ghidra-cli ~/Library/Application Support/ghidra-cli + ~/Library/Preferences/ghidra-cli ~/AppData/Local/ghidra-cli - key: ghidra-${{ matrix.os }}-v3 + ~/AppData/Roaming/ghidra-cli + key: ghidra-${{ matrix.os }}-v4 - name: Cache Ghidra projects uses: actions/cache@v4