Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Binaries update #8

Merged
merged 39 commits into from
Jun 10, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c42cb10
removed bintray mentions and added bonus configuration in the release…
georg-getz Jun 2, 2024
a5745d1
changed action provider for prerelease
georg-getz Jun 2, 2024
482ba6e
removed creating pre-release
georg-getz Jun 2, 2024
12b0765
update gradelev
georg-getz Jun 2, 2024
3abd0c7
added echo command for arch
georg-getz Jun 3, 2024
6f06e26
added line
georg-getz Jun 3, 2024
5bbed48
fix
georg-getz Jun 3, 2024
c47c84e
trying
georg-getz Jun 3, 2024
3a181dc
added missing line
georg-getz Jun 3, 2024
6ae1725
switched sopaces for tabs
georg-getz Jun 3, 2024
77df660
small changes
georg-getz Jun 3, 2024
6848be6
typo
georg-getz Jun 3, 2024
8f1e261
added a separate file for the mac release
georg-getz Jun 3, 2024
7a38833
2nd try with arch
georg-getz Jun 3, 2024
a67f696
distribution
georg-getz Jun 3, 2024
49501f2
added additional file for building the dylibs
georg-getz Jun 3, 2024
aafd96c
nerf eddition level
georg-getz Jun 3, 2024
17815cb
another nerf
georg-getz Jun 3, 2024
c8223ff
aded file for dylib generation
georg-getz Jun 3, 2024
ca6e8c5
/testing
georg-getz Jun 3, 2024
2281d8e
changed generation command
georg-getz Jun 3, 2024
dceeb6a
changed release action
georg-getz Jun 3, 2024
4bf3c2d
added rustup target
georg-getz Jun 3, 2024
3d99230
typo
georg-getz Jun 3, 2024
72ee5b9
typo
georg-getz Jun 3, 2024
5a1c5df
testing
georg-getz Jun 3, 2024
47ca32f
testing
georg-getz Jun 3, 2024
ee7a2ca
testing
georg-getz Jun 3, 2024
7338855
testing
georg-getz Jun 3, 2024
6277135
testing
georg-getz Jun 3, 2024
96fa7fe
changed all the yamls to activate on release to test everything together
georg-getz Jun 3, 2024
a1407fd
added some logs as well
georg-getz Jun 3, 2024
9b832aa
removed the 32 linux platform as github doesnt support such images an…
georg-getz Jun 3, 2024
12e8215
change to on push
georg-getz Jun 3, 2024
2f23d92
the aarch64v linux is incompatible too
georg-getz Jun 3, 2024
5636381
removed slashes
georg-getz Jun 3, 2024
53c1d98
deleted the outdated commandd in makefile
georg-getz Jun 3, 2024
8b363de
undo deleting the makefile rust build commands as it is apperantly us…
georg-getz Jun 4, 2024
edb0ec2
Package all natives in a single jar. (#9)
Zurcusa Jun 10, 2024
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@v1
with:
path: ~/.cargo/registry
key: cargo-registry-${{ hashFiles('**/Cargo.lock') }}

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

- name: Cache Cargo build
uses: actions/cache@v1
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/get-release@v1.3.2
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
2 changes: 1 addition & 1 deletion 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 <ivan.enderlin@hoa-project.net>"]
edition = "2018"
version = "1.1.0"
edition = "2021"

[lib]
crate-type = ["cdylib"]
Expand Down
4 changes: 0 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -112,10 +112,6 @@ javadoc:
package:
"./gradlew" --info jar

# Publish the package artifact to a public repository
publish:
"./gradlew" --info uploadToBintray

# Run a specific example, with `make run-example EXAMPLE=Simple` for instance.
run-example:
$(eval JAR := $(shell find ./build/libs/ -name "wasmer-jni-*.jar"))
Expand Down
Loading
Loading