chore: add new java release/test workflow #21
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Cross-platform Build and Test | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
branches: [ "master" ] | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
name: Build for ${{ matrix.target }} | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
target: | |
- x86_64-unknown-linux-gnu | |
- aarch64-unknown-linux-gnu | |
- aarch64-apple-darwin | |
- x86_64-apple-darwin | |
- x86_64-pc-windows-gnu | |
# - aarch64-pc-windows-msvc | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
override: true | |
- name: Install cargo-binstall | |
uses: taiki-e/install-action@cargo-binstall | |
- name: Install Zig | |
uses: goto-bus-stop/setup-zig@v2 | |
with: | |
version: 0.10.1 | |
- name: Install cargo-zigbuild | |
run: cargo binstall --no-confirm cargo-zigbuild | |
- name: Set up MinGW (for x86_64 Windows) | |
if: ${{ matrix.target == 'x86_64-pc-windows-gnu' }} | |
run: sudo apt-get install gcc-mingw-w64-x86-64 -y | |
- name: Run compile script | |
run: | | |
chmod +x .github/scripts/compile_all_targets_java_new.sh | |
.github/scripts/compile_all_targets_java_new.sh ${{ matrix.target }} | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.target }} | |
path: target/${{ matrix.target }}/release/* | |
test: | |
name: Test on ${{ matrix.os }} | |
needs: build | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
target: x86_64-unknown-linux-gnu | |
- os: linux-arm64 | |
target: aarch64-unknown-linux-gnu | |
- os: macos-latest | |
target: x86_64-apple-darwin | |
- os: macos-latest | |
target: aarch64-apple-darwin | |
- os: windows-latest | |
target: x86_64-pc-windows-gnu | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: ${{ matrix.target }} | |
override: true | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
name: ${{ matrix.target }} | |
path: target/${{ matrix.target }}/release | |
- name: Make binaries executable | |
if: runner.os != 'Windows' | |
run: chmod +x target/${{ matrix.target }}/release/* | |
# Windows has a weird heap allocation error when running tests | |
# This happens because each test in fk20, will create commit and opening | |
# keys. Its not clear as to why the tests are not freeing the heap allocations | |
# on windows, but running the tests on a single thread, fixes it. | |
- name: Run tests (Windows) | |
if: runner.os == 'Windows' | |
run: cargo test --target ${{ matrix.target }} -- --test-threads=1 --nocapture | |
- name: Run tests | |
if: runner.os != 'Windows' | |
run: cargo test --target ${{ matrix.target }} |