Skip to content

fix(bridge): re-introduce isPackagedElectron flag for java lib #612

fix(bridge): re-introduce isPackagedElectron flag for java lib

fix(bridge): re-introduce isPackagedElectron flag for java lib #612

Workflow file for this run

name: Test
on:
push:
branches:
- main
pull_request:
env:
CARGO_TERM_COLOR: always
concurrency:
group: ${{ github.workflow }}-${{ github.ref == 'refs/heads/main' && github.run_id || github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test-cargo:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.3
- name: Build
run: cargo build
- name: Run tests
run: cargo test
timeout-minutes: 20
test-cargo-all:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.3
- name: Build
run: cargo build --all-features
- name: Run tests
run: cargo test --all-features
timeout-minutes: 20
test-npm:
strategy:
matrix:
include:
- os: ubuntu-22.04
node-version: 20.x
arch: x64
features: default
- os: ubuntu-latest
node-version: 22.x
arch: x64
features: all
- os: windows-latest
node-version: 20.x
arch: x64
features: default
- os: windows-latest
node-version: 22.x
arch: x64
features: all
- os: windows-latest
node-version: 20.x
arch: x86
features: default
- os: windows-latest
node-version: 22.x
arch: x86
features: default
- os: macos-latest
node-version: 20.x
arch: arm64
features: default
- os: macos-latest
node-version: 22.x
arch: arm64
features: all
runs-on: ${{matrix.os}}
steps:
- uses: actions/checkout@v6
- name: Setup Node.js ${{matrix.node-version}} environment
uses: actions/setup-node@v6
with:
node-version: ${{matrix.node-version}}
architecture: ${{matrix.arch}}
- name: Setup java 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
architecture: ${{matrix.arch}}
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.3
if: ${{matrix.os != 'ubuntu-latest' && matrix.os != 'ubuntu-20.04'}}
- name: Install
run: npm ci
- name: Build
if: ${{(matrix.os != 'windows-latest' || matrix.arch == 'x64') && matrix.features == 'default'}}
run: npm run build
- name: Build with all features
if: ${{(matrix.os != 'windows-latest' || matrix.arch == 'x64') && matrix.features == 'all'}}
run: npm run build:all
- name: Build (win32)
if: ${{matrix.os == 'windows-latest' && matrix.arch == 'x86'}}
run: |
rustup target add i686-pc-windows-msvc
npm run build -- -- --target i686-pc-windows-msvc
shell: bash
- name: Run tests
run: npm run testOnly
timeout-minutes: 20
- name: Create test summary
uses: test-summary/action@dist
if: always()
with:
show: all
paths: testResults.xml
- name: Create package
if: ${{matrix.node-version == '20.x'}}
shell: bash
run: |
node -e 'let p=require("./package.json");p.files.push("dist/*.node");require("fs").writeFileSync("package.json",JSON.stringify(p,null,4))'
npm pack
- name: Upload package
uses: actions/upload-artifact@v6
if: ${{matrix.node-version == '20.x'}}
with:
name: java-${{matrix.arch}}-${{matrix.os}}
path: java-bridge-*.tgz
test-linux-aarch64-gnu-binding:
strategy:
fail-fast: false
matrix:
node-version: [20, 22]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Setup Node.js ${{matrix.node-version}} environment
uses: actions/setup-node@v6
with:
node-version: ${{matrix.node-version}}
- name: Setup java 17
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: aarch64-unknown-linux-gnu
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.3
- name: Install cross compile toolchain
run: |
sudo apt-get update
sudo apt-get install gcc-multilib -y
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu -y
- name: Set linker
run: |
mkdir .cargo
printf '[target.aarch64-unknown-linux-gnu]\nlinker = "aarch64-linux-gnu-gcc"\n' >> .cargo/config
- name: Install
run: npm ci
- name: Build
run: npm run build -- -- --target aarch64-unknown-linux-gnu
- name: Install test dependencies
run: npm install
- name: Init qemu
run: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Run tests
uses: addnab/docker-run-action@v3
timeout-minutes: 180
with:
image: arm64v8/node:${{matrix.node-version}}-trixie
options: -v ${{ github.workspace }}:/github/workspace -w /github/workspace --platform linux/arm64
run: |
apt-get update
apt-get install ca-certificates-java -y
apt-get install openjdk-21-jre-headless -y
apt-get remove -y openjdk-11*
npm config set cache /tmp --global
export CI=true
npm install
npm run testOnly
- name: Create test summary
uses: test-summary/action@dist
if: always()
with:
show: all
paths: testResults.xml
- name: Create package
if: ${{matrix.node-version == '20'}}
run: |
node -e 'let p=require("./package.json");p.files.push("dist/*.node");require("fs").writeFileSync("package.json",JSON.stringify(p,null,4))'
npm pack
- name: Upload package
uses: actions/upload-artifact@v6
if: ${{matrix.node-version == '20'}}
with:
name: java-arm64-ubuntu
path: java-bridge-*.tgz
test-linux-musl-binding:
strategy:
fail-fast: false
matrix:
node-version: [20, 22]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.3
- name: Run tests
uses: addnab/docker-run-action@v3
timeout-minutes: 180
with:
image: ghcr.io/markusjx/node-java-bridge/java-bridge-node-alpine-build:node-${{matrix.node-version}}-jdk-17
options: -v ${{ github.workspace }}:/github/workspace -w /github/workspace
run: |
npm config set cache /tmp --global
export CI=true
npm ci
npm test
- name: Create test summary
uses: test-summary/action@dist
if: always()
with:
show: all
paths: testResults.xml
- name: Create package
if: ${{matrix.node-version == '20'}}
run: |
node -e 'let p=require("./package.json");p.files.push("dist/*.node");require("fs").writeFileSync("package.json",JSON.stringify(p,null,4))'
npm pack
- name: Upload package
uses: actions/upload-artifact@v6
if: ${{matrix.node-version == '20'}}
with:
name: java-x64-ubuntu-musl
path: java-bridge-*.tgz
benchmark:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Setup Node.js environment
uses: actions/setup-node@v6
with:
node-version: 22.x
- uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
- name: Rust Cache
uses: Swatinem/rust-cache@v2.7.3
- name: Install
run: npm ci
- name: Run benchmarks
run: npm run benchmark
timeout-minutes: 20