diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 83a3855..a6f7590 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -11,11 +11,17 @@ env: jobs: build: - runs-on: ${{ matrix.os }} + runs-on: ${{ matrix.target.runner }} strategy: fail-fast: false matrix: - os: [ubuntu-latest, macos-latest, windows-latest] + target: + - {os: "linux", arch: "x86_64", runner: "ubuntu-latest"} + - {os: "linux", arch: "aarch64", runner: "ubuntu-24.04-arm"} + - {os: "macos", arch: "x86_64", runner: "macos-26-intel"} + - {os: "macos", arch: "aarch64", runner: "macos-latest"} + - {os: "windows", arch: "x86_64", runner: "windows-latest"} + - {os: "windows", arch: "aarch64", runner: "windows-11-arm" } steps: - uses: actions/checkout@v6 @@ -32,13 +38,32 @@ jobs: - name: Run tests run: cargo test --release + - name: Rename artifacts + shell: bash + run: | + cd target/release/ + + suffix="${{ matrix.target.os }}-${{ matrix.target.arch }}" + + case "${{ matrix.target.os }}" in + windows) + mv classloader.dll classloader-$suffix.dll + ;; + macos) + mv libclassloader.dylib libclassloader-$suffix.dylib + ;; + linux) + mv libclassloader.so libclassloader-$suffix.so + ;; + esac + - name: Upload dynamic libraries uses: actions/upload-artifact@v7 with: archive: false - name: shared-libs-${{ matrix.os }} + name: shared-libs-${{ matrix.target.os }}-${{ matrix.target.arch}} path: | target/release/*.dll target/release/*.so target/release/*.dylib - if-no-files-found: ignore \ No newline at end of file + if-no-files-found: ignore