From 23567aeb6b1184cd004ab7419b8e1895be618024 Mon Sep 17 00:00:00 2001 From: Luis Cabral <58452540+oluiscabral@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:30:57 -0300 Subject: [PATCH] Builds and releases `fs-storage` for JNI and builds and releases `java` package on GitHub package --- .github/workflows/build.yml | 26 ++++++++++++++++++++ ark-cli/README.md | 27 --------------------- data-error/Cargo.toml | 2 +- data-link/Cargo.toml | 2 +- java/lib/build.gradle.kts | 47 +++++++++++++++++++++++-------------- 5 files changed, 58 insertions(+), 46 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a6a7d947..4493b187 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,6 +55,32 @@ jobs: run: gradle test working-directory: ./java + # Upload fs-storage JNI libs + - name: Install cargo-ndk + run: cargo install cargo-ndk + + - name: Add Rust Toolchain + uses: dtolnay/rust-toolchain@stable + with: + toolchain: stable + targets: aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android + + - name: Build fs-storage JNI libs + run: cargo ndk -o ./target/release/fs-storage/jniLibs --target aarch64-linux-android --target armv7-linux-androideabi --target i686-linux-android --target x86_64-linux-android build -p fs-storage --release + + - name: Upload fs-storage JNI libs + uses: actions/upload-artifact@v4 + with: + name: fs-storage-jni-libs + path: ./target/release/fs-storage/jniLibs + # --- + + - name: Publish Java release + run: gradle publish + working-directory: ./java + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + windows: name: Test on Windows runs-on: windows-latest diff --git a/ark-cli/README.md b/ark-cli/README.md index 033aac80..58932874 100644 --- a/ark-cli/README.md +++ b/ark-cli/README.md @@ -1,32 +1,5 @@ # Ark-CLI -### Installation - -To compile you will need openssl libraries and headers: - -```shell -# macOS (Homebrew) -$ brew install openssl@3 - -# macOS (MacPorts) -$ sudo port install openssl - -# macOS (pkgsrc) -$ sudo pkgin install openssl - -# Arch Linux -$ sudo pacman -S pkg-config openssl - -# Debian and Ubuntu -$ sudo apt-get install pkg-config libssl-dev - -# Fedora -$ sudo dnf install pkg-config perl-FindBin openssl-devel - -# Alpine Linux -$ apk add pkgconfig openssl-dev -``` - ### Usage ```shell diff --git a/data-error/Cargo.toml b/data-error/Cargo.toml index 63ac295d..5ad9127d 100644 --- a/data-error/Cargo.toml +++ b/data-error/Cargo.toml @@ -10,7 +10,7 @@ bench = false [dependencies] thiserror = "1" -reqwest = "0.11.11" +reqwest = { version = "0.11.11", features = [ "json", "rustls-tls" ], default-features = false } serde_json = "1.0.82" anyhow = "1" url = { version = "2.2.2", features = ["serde"] } diff --git a/data-link/Cargo.toml b/data-link/Cargo.toml index 6821ceda..4cae70ce 100644 --- a/data-link/Cargo.toml +++ b/data-link/Cargo.toml @@ -13,7 +13,7 @@ log = { version = "0.4.17", features = ["release_max_level_off"] } serde_json = "1.0.82" serde = { version = "1.0.138", features = ["derive"] } url = { version = "2.2.2", features = ["serde"] } -reqwest = "0.11.11" +reqwest = { version = "0.11.11", features = [ "json", "rustls-tls" ], default-features = false } scraper = "0.13.0" tokio = { version = "1", features = ["full"] } diff --git a/java/lib/build.gradle.kts b/java/lib/build.gradle.kts index 96541a60..8d5fee26 100644 --- a/java/lib/build.gradle.kts +++ b/java/lib/build.gradle.kts @@ -1,24 +1,20 @@ plugins { - // Apply the java-library plugin for API and implementation separation. - `java-library` + `maven-publish` // Apply the maven-publish plugin before java-library for publishing to GitHub Packages. + `java-library` // Apply the java-library plugin for API and implementation separation. } +group = "dev.arkbuilders.core" +version = "1.0-SNAPSHOT" + repositories { - // Use Maven Central for resolving dependencies. - mavenCentral() + mavenCentral() // Use Maven Central for resolving dependencies. } dependencies { - // Use JUnit Jupiter for testing. - testImplementation(libs.junit.jupiter) - + testImplementation(libs.junit.jupiter) // Use JUnit Jupiter for testing. testRuntimeOnly("org.junit.platform:junit-platform-launcher") - - // This dependency is exported to consumers, that is to say found on their compile classpath. - api(libs.commons.math3) - - // This dependency is used internally, and not exposed to consumers on their own compile classpath. - implementation(libs.guava) + api(libs.commons.math3) // This dependency is exported to consumers, that is to say found on their compile classpath. + implementation(libs.guava) // This dependency is used internally, and not exposed to consumers on their own compile classpath. } // Apply a specific Java toolchain to ease working on different environments. @@ -29,10 +25,8 @@ java { } tasks.named("test") { - // Use JUnit Platform for unit tests. - useJUnitPlatform() - // Set the JVM argument for the java.library.path (To import rust compiled library) - val rustLibPath = projectDir.resolve("../../target/release").absolutePath + val rustLibPath = projectDir.resolve("../../target/release").absolutePath // Set the JVM argument for the java.library.path (To import rust compiled library) + useJUnitPlatform() // Use JUnit Platform for unit tests. jvmArgs = listOf("-Djava.library.path=$rustLibPath") } @@ -40,3 +34,22 @@ tasks.named("javadoc") { options.encoding = "UTF-8" options.memberLevel = JavadocMemberLevel.PUBLIC } + +publishing { + // Define a Maven publication for the 'maven' repository + publications { + create("Maven") { + from(components["java"]) + } + } + repositories { + maven { + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/ARK-Builders/ark-core") + credentials { + username = System.getenv("GITHUB_ACTOR") + password = System.getenv("GITHUB_TOKEN") + } + } + } +}