diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b0eebbe..51af5b9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,8 +9,58 @@ env: CARGO_TERM_COLOR: always jobs: + test: + name: Test ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + + steps: + - uses: actions/checkout@v4 + + - name: Install Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Install Python 3 + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache Rust + uses: Swatinem/rust-cache@v2 + + - name: Cache Ghidra + uses: actions/cache@v4 + with: + path: | + ~/.local/share/ghidra-cli + ~/Library/Application Support/ghidra-cli + ~/AppData/Local/ghidra-cli + key: ghidra-${{ matrix.os }}-v1 + + - name: Build + run: cargo build --verbose + + - name: Setup Ghidra + run: cargo run -- setup --force + + - name: Run unit tests + run: cargo test --lib --verbose + + - name: Run integration tests + run: cargo test --test '*' --verbose + build: name: Build ${{ matrix.target }} + needs: test runs-on: ${{ matrix.os }} strategy: fail-fast: false @@ -18,16 +68,12 @@ jobs: include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest - archive: tar.gz - target: x86_64-apple-darwin os: macos-latest - archive: tar.gz - target: aarch64-apple-darwin os: macos-latest - archive: tar.gz - target: x86_64-pc-windows-msvc os: windows-latest - archive: zip steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2f109bc..90d3cbb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,12 +11,49 @@ env: jobs: test: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + steps: - uses: actions/checkout@v4 - - uses: dtolnay/rust-toolchain@stable - - uses: Swatinem/rust-cache@v2 + + - name: Install Java 17 + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '17' + + - name: Install Python 3 + uses: actions/setup-python@v5 + with: + python-version: '3.11' + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Cache Rust + uses: Swatinem/rust-cache@v2 + + - name: Cache Ghidra + uses: actions/cache@v4 + with: + path: | + ~/.local/share/ghidra-cli + ~/Library/Application Support/ghidra-cli + ~/AppData/Local/ghidra-cli + key: ghidra-${{ matrix.os }}-v1 + - name: Build run: cargo build --verbose + + - name: Setup Ghidra + run: cargo run -- setup --force + - name: Run unit tests run: cargo test --lib --verbose + + - name: Run integration tests + run: cargo test --test '*' --verbose