Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 134 additions & 0 deletions .github/workflows/build_publish.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# This workflow compiles the native wasmer_jni lib into various OS and architectures using dynamic_libs_reusable.yaml.
# Then it builds and publishes the JAR based on the GITHUB_REF that calls the workflow. There are 2 options:
# 1. The workflow is executed from a branch. In that case the JAR is available in the GitHub action as an artifact.
# 2. The workflow is executed from a tag. In that case the JAR is published in the corresponding GitHub release.
name: Build and publish

on:
push:
branches:
- '*' # Trigger on push to any branch
tags:
- '*' # Trigger on push to any tag

jobs:
upload_dynamic_libs:
strategy:
matrix:
platform:
- os: 'macos-latest'
target: 'aarch64-apple-darwin'
artifact: 'darwin-arm64'
lib_name: 'libwasmer_jni.dylib'

- os: 'macos-latest'
target: 'x86_64-apple-darwin'
artifact: 'darwin-amd64'
lib_name: 'libwasmer_jni.dylib'

- os: 'ubuntu-latest'
target: 'x86_64-unknown-linux-gnu'
artifact: 'linux-amd64'
lib_name: 'libwasmer_jni.so'

- os: 'windows-latest'
target: 'x86_64-pc-windows-msvc'
artifact: 'windows-amd64'
lib_name: 'wasmer_jni.dll'
uses: ./.github/workflows/dynamic_libs_reusable.yaml
with:
platform_os: ${{ matrix.platform.os }}
platform_target: ${{ matrix.platform.target }}
platform_artifact: ${{ matrix.platform.artifact }}
platform_lib_name: ${{ matrix.platform.lib_name }}

publish_jar:
name: Publish the JARs
runs-on: ubuntu-latest
needs: [upload_dynamic_libs]

steps:
- name: Check out code
uses: actions/checkout@v2

- name: Set up Java 21
uses: actions/setup-java@v1
with:
java-version: 21

- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true

- name: Cache Cargo registry
uses: actions/cache@v3
with:
path: ~/.cargo/registry
key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}

- name: Cache Cargo bin
uses: actions/cache@v3
with:
path: ~/.cargo/bin
key: cargo-bin-${{ hashFiles('**/Cargo.lock') }}

- name: Cache Cargo build
uses: actions/cache@v3
with:
path: target
key: cargo-build-target-${{ hashFiles('**/Cargo.lock') }}

- name: Setup wasmer-jni artifacts dir
shell: bash
run: |
echo "EXT_ARTIFACTS_DIR=$(mktemp -d)" >> $GITHUB_ENV

- name: Download wasmer_jni artifacts
uses: actions/download-artifact@v4
with:
path: ${{ env.EXT_ARTIFACTS_DIR }}

- name: Display structure of downloaded files
run: ls -R $EXT_ARTIFACTS_DIR

- name: Run all the tests
shell: bash
run: |
export PATH="$HOME/.cargo/bin:$PATH"
make test

- name: Create the JAR
id: create_jar
shell: bash
run: |
export PATH="$HOME/.cargo/bin:$PATH"
make package

- name: Upload JAR as workflow artifact
if: startsWith(github.ref, 'refs/heads/')
uses: actions/upload-artifact@v4
with:
name: ${{ steps.create_jar.outputs.name }}
path: ${{ steps.create_jar.outputs.path }}
retention-days: 1

- name: Get release info
id: get_release_info
if: startsWith(github.ref, 'refs/tags/')
uses: bruceadams/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload JAR as Github pre-release asset
if: startsWith(github.ref, 'refs/tags/')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.get_release_info.outputs.upload_url }}
asset_path: ${{ steps.create_jar.outputs.path }}
asset_name: ${{ steps.create_jar.outputs.name }}
asset_content_type: application/java-archive
53 changes: 53 additions & 0 deletions .github/workflows/dynamic_libs_reusable.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# This workflow cross compiles a rust library into a native based on a provided target.
# The compiled library is then uploaded as a GitHub artifact.
name: upload_dynamic_libs

on:
workflow_call:
inputs:
platform_os:
description: Operating system that the runner will use.
type: string
required: true
platform_target:
description: The architecture that rust will compile the libs for.
type: string
required: true
platform_artifact:
description: The name of the artifact that will be uploaded.
type: string
required: true
platform_lib_name:
description: Name of the native library to be uploaded in the artifact.
type: string
required: true


jobs:
publish_dlibs:
name: Publish the dynamic libraries
runs-on: ${{ inputs.platform_os }}
steps:
- name: Check out code
uses: actions/checkout@v3

- name: Set up Rust
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true

- name: Create the dynamic libs
shell: bash
run: |
export PATH="$HOME/.cargo/bin:$PATH"
rustup target add ${{ inputs.platform_target }}
cargo build --release --target=${{ inputs.platform_target }}

- name: Upload the dynamic libs
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.platform_artifact }}
path: ./target/${{ inputs.platform_target }}/release/${{ inputs.platform_lib_name }}
retention-days: 1
130 changes: 0 additions & 130 deletions .github/workflows/release.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/test.yml → .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ jobs:
strategy:
matrix:
# The job runs on 3 different OS.
os: [ubuntu-latest, macos-latest, windows-latest]
os: [ubuntu-latest, macos-13, windows-latest]
# The job runs on different Java versions (LTS).
java: [8]
java: [21]
# As soon as one job fails in the matrix, all the other
# in-progress jobs are canceled.
fail-fast: true
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,5 @@
/build
/include/org/
/target
/.idea/
/.idea/
.DS_Store
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 2 additions & 3 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
[package]
publish = false
name = "wasmer-jni"
version = "0.3.0"
authors = ["Ivan Enderlin <[email protected]>"]
edition = "2018"
version = "1.1.1"
edition = "2021"

[lib]
crate-type = ["cdylib"]
Expand Down
Loading
Loading