diff --git a/.github/workflows/dep_rust.yml b/.github/workflows/dep_rust.yml index 9c3e8706e..12bcd6a84 100644 --- a/.github/workflows/dep_rust.yml +++ b/.github/workflows/dep_rust.yml @@ -121,6 +121,30 @@ jobs: run: (Get-Service actions.runner.*) | Foreach { $_.Name, $_.UserName, $_.ServiceType } shell: pwsh + # If exact key match is found, it will be restored and the below `just build-rust-guests` step will be much faster + # If a partial key match is found (restore-keys), it will be restored but `just build-rust-guests` will perform an incremental build + # If neither, `just build-rust-guests` will perform a full build + - name: Cache Guest Binaries + id: cache-guests + uses: actions/cache@v4 + with: + path: | + src/tests/rust_guests/simpleguest/target/x86_64-unknown-none/${{ inputs.config }} + src/tests/rust_guests/dummyguest/target/x86_64-unknown-none/${{ inputs.config }} + src/tests/rust_guests/witguest/target/x86_64-unknown-none/${{ inputs.config }} + src/tests/rust_guests/simpleguest/target/${{ inputs.config }} + src/tests/rust_guests/dummyguest/target/${{ inputs.config }} + src/tests/rust_guests/witguest/target/${{ inputs.config }} + src/tests/c_guests/c_simpleguest/out/${{ inputs.config }} + key: guest-binaries-${{ runner.os }}-${{ inputs.config }}-${{ hashFiles('src/tests/rust_guests/**/*', 'src/tests/c_guests/**/*') }} # cargo.lock is not sufficent as it is not always up to date due to dependabot PRs + restore-keys: | + guest-binaries-${{ runner.os }}-${{ inputs.config }}- + enableCrossOsArchive: false # binaries are compatible but build artifacts contain absolute paths + + - name: Display cache hit info + run: | + echo "Cache hit: ${{ steps.cache-guests.outputs.cache-hit }}" + - name: Build and move Rust guests run: | # use these commands in favor of build-and-move-rust-guests to avoid building both configs diff --git a/Justfile b/Justfile index 3f8cf18a6..07032968d 100644 --- a/Justfile +++ b/Justfile @@ -59,7 +59,7 @@ build-rust-guests target=default-target features="": (witguest-wit) build-and-move-rust-guests: (build-rust-guests "debug") (move-rust-guests "debug") (build-rust-guests "release") (move-rust-guests "release") build-and-move-c-guests: (build-c-guests "debug") (move-c-guests "debug") (build-c-guests "release") (move-c-guests "release") -clean: clean-rust +clean: clean-rust clean-c clean-rust: cargo clean @@ -67,7 +67,11 @@ clean-rust: cd src/tests/rust_guests/dummyguest && cargo clean {{ if os() == "windows" { "cd src/tests/rust_guests/witguest -ErrorAction SilentlyContinue; cargo clean" } else { "[ -d src/tests/rust_guests/witguest ] && cd src/tests/rust_guests/witguest && cargo clean || true" } }} {{ if os() == "windows" { "Remove-Item src/tests/rust_guests/witguest/interface.wasm -Force -ErrorAction SilentlyContinue" } else { "rm -f src/tests/rust_guests/witguest/interface.wasm" } }} + +clean-c: git clean -fdx src/tests/c_guests/bin src/tests/rust_guests/bin + git clean -fdx src/tests/c_guests/c_simpleguest/out src/tests/c_guests/c_callbackguest/out + ################ ### TESTING ####