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
97 changes: 97 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
name: Build Project

on:
push:
branches: [ "master" ]
pull_request:

jobs:
linux:
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
- target: i686-unknown-linux-gnu
deps: apt-get install -y gcc-multilib
- target: aarch64-unknown-linux-gnu
deps: apt-get install -y gcc-aarch64-linux-gnu
- target: armv7-unknown-linux-gnueabihf
deps: apt-get install -y gcc-arm-linux-gnueabihf

name: Build ${{ matrix.target }}
runs-on: ubuntu-latest
container:
image: ubuntu:18.04
steps:
- name: Checkout sources
uses: taiki-e/checkout-action@v1
- name: Install Essentials
run: |
apt-get update -y
apt-get upgrade -y
apt-get install -y curl gcc openjdk-17-jdk-headless
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
targets: ${{ matrix.target }}
- name: Install linker dependencies
run: ${{ matrix.deps }}
if: ${{ matrix.deps != '' }}
- name: Run Gradle Build
run: ./gradlew build -Ptarget=${{ matrix.target }}

windows:
strategy:
matrix:
include:
- target: x86_64-pc-windows-msvc
- target: i686-pc-windows-msvc

name: Build ${{ matrix.target }}
runs-on: windows-2022
steps:
- name: Checkout sources
uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: ${{ matrix.target }}
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'
- name: Run Gradle Build
run: ./gradlew build -Ptarget=${{ matrix.target }}

macos:
name: Build macOS universal binary
runs-on: macos-14
steps:
- name: Checkout sources
uses: actions/checkout@v6

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Compile natives
working-directory: native
run: |
rustup target add x86_64-apple-darwin
cargo build -r --target=x86_64-apple-darwin
rustup target add aarch64-apple-darwin
cargo build -r --target=aarch64-apple-darwin

- name: Create target directory for darwin
run: mkdir -p native/target/darwin/release

- name: Combine to universal dylib
run: lipo -create -output native/target/darwin/release/libudpqueue.dylib native/target/**/release/*.dylib

- name: Run Gradle Build
run: ./gradlew build -x cargoBuild -Ptarget=darwin
12 changes: 3 additions & 9 deletions .github/workflows/musl.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
name: musl

on:
push:
branches: [ "master" ]
paths:
- '.github/workflows/musl.yml' # when new targets are added
- 'build.gradle.kts' # when the root build script changes
- 'api' # when api source is changed
- 'native' # when natives are changed
workflow_dispatch:

concurrency:
group: "pub-musl"
Expand Down Expand Up @@ -37,14 +31,14 @@ jobs:
image: alpine:3.18
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: taiki-e/checkout-action@v1
- name: Install Essentials
run: |
apk add curl gcc bash
mkdir -p /root/musl
curl -q https://musl.cc/x86_64-linux-musl-cross.tgz | tar xzf - -C /root/musl
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@0e66bd3e6b38ec0ad5312288c83e47c143e6b09e #@v1.0.6
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
target: x86_64-unknown-linux-musl ${{ matrix.target }} # requires native target installed to build proc-macros2
Expand Down
24 changes: 8 additions & 16 deletions .github/workflows/publish-api.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
name: publish-api

on:
push:
branches: [ "master" ]
paths:
- '.github/workflows/publish-api.yml' # when new targets are added
- 'build.gradle.kts' # when the root build script changes
- 'api' # when api source is changed
workflow_dispatch:


Expand All @@ -21,15 +15,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
uses: actions/checkout@v6

- name: Publish
- name: Build and Publish
env:
ORG_GRADLE_PROJECT_ossrhUser: ${{ secrets.OSSRH_USER }}
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
ORG_GRADLE_PROJECT_stagingProfile: ${{ secrets.STAGING_PROFILE_ID }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_KEY }}
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_KEYID }}
run: |
chmod u+x gradlew
./gradlew --console plain --stacktrace -Ptarget=x86_64-unknown-linux-gnu api:publishToSonatype closeAndReleaseStagingRepository
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }}
JRELEASER_MAVENCENTRAL_TOKEN: ${{ secrets.MAVENCENTRAL_TOKEN }}
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: ./gradlew api:publish api:jreleaserRelease
55 changes: 0 additions & 55 deletions .github/workflows/publish-mac.yml

This file was deleted.

102 changes: 60 additions & 42 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,6 @@
name: publish-natives

on:
push:
branches: [ "master" ]
paths:
- '.github/workflows/publish.yml' # when new targets are added
- 'build.gradle.kts' # when the root build script changes
- 'api' # when api source is changed
- 'native' # when natives are changed
workflow_dispatch:

concurrency:
Expand All @@ -29,22 +22,17 @@ jobs:

name: Publish ${{ matrix.target }}
environment: MavenRelease
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
container:
image: ubuntu:16.04
image: ubuntu:18.04
steps:
- name: Checkout sources
uses: taiki-e/checkout-action@v1
- name: Install Essentials
run: |
apt-get update -y
apt-get upgrade -y
apt-get install -y curl gcc openjdk-8-jdk-headless
- name: Setup rustup
run: |
curl --proto '=https' --tlsv1.2 --retry 10 --location --silent --show-error --fail "https://sh.rustup.rs" | sh -s -- --default-toolchain none -y
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
shell: bash
apt-get install -y curl gcc openjdk-17-jdk-headless
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
Expand All @@ -53,19 +41,15 @@ jobs:
- name: Install linker dependencies
run: ${{ matrix.deps }}
if: ${{ matrix.deps != '' }}
- name: Compile natives
working-directory: native
run: cargo build -r --target=${{ matrix.target }}
- name: Publish
- name: Build and Publish
env:
ORG_GRADLE_PROJECT_ossrhUser: ${{ secrets.OSSRH_USER }}
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
ORG_GRADLE_PROJECT_stagingProfile: ${{ secrets.STAGING_PROFILE_ID }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_KEY }}
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_KEYID }}
run: |
chmod u+x gradlew
./gradlew --console plain --stacktrace -Ptarget="${{ matrix.target }}" native:publishToSonatype closeAndReleaseStagingRepository
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }}
JRELEASER_MAVENCENTRAL_TOKEN: ${{ secrets.MAVENCENTRAL_TOKEN }}
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: ./gradlew native:publish native:jreleaserRelease -Ptarget=${{ matrix.target }}

windows:
strategy:
matrix:
Expand All @@ -75,27 +59,61 @@ jobs:

name: Publish ${{ matrix.target }}
environment: MavenRelease
runs-on: windows-2019
runs-on: windows-2022
steps:
- name: Checkout sources
uses: actions/checkout@v2
uses: actions/checkout@v6
- name: Install Rust toolchain
uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af #@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
override: true
target: ${{ matrix.target }}
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: 'temurin'
java-version: '17'
cache: 'gradle'
- name: Build and Publish
env:
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }}
JRELEASER_MAVENCENTRAL_TOKEN: ${{ secrets.MAVENCENTRAL_TOKEN }}
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: ./gradlew native:publish native:jreleaserRelease -Ptarget=${{ matrix.target }}

macos:
name: Build macOS universal binary
runs-on: macos-14
steps:
- name: Checkout sources
uses: actions/checkout@v6

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable

- name: Compile natives
working-directory: native
run: cargo build -r --target=${{ matrix.target }}
- name: Publish
env:
ORG_GRADLE_PROJECT_ossrhUser: ${{ secrets.OSSRH_USER }}
ORG_GRADLE_PROJECT_ossrhPassword: ${{ secrets.OSSRH_PASSWORD }}
ORG_GRADLE_PROJECT_stagingProfile: ${{ secrets.STAGING_PROFILE_ID }}
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_KEY }}
ORG_GRADLE_PROJECT_signingKeyId: ${{ secrets.GPG_KEYID }}
run: |
chmod u+x gradlew
./gradlew --console plain --stacktrace -Ptarget="${{ matrix.target }}" native:publishToSonatype closeAndReleaseStagingRepository
rustup target add x86_64-apple-darwin
cargo build -r --target=x86_64-apple-darwin
rustup target add aarch64-apple-darwin
cargo build -r --target=aarch64-apple-darwin

- name: Create target directory for darwin
run: mkdir -p native/target/darwin/release

- name: Combine to universal dylib
run: lipo -create -output native/target/darwin/release/libudpqueue.dylib native/target/**/release/*.dylib

- name: Build and Publish
env:
JRELEASER_MAVENCENTRAL_USERNAME: ${{ secrets.MAVENCENTRAL_USERNAME }}
JRELEASER_MAVENCENTRAL_TOKEN: ${{ secrets.MAVENCENTRAL_TOKEN }}
JRELEASER_GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
JRELEASER_GPG_SECRET_KEY: ${{ secrets.GPG_SECRET_KEY }}
JRELEASER_GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
run: ./gradlew native:publish native:jreleaserRelease -Ptarget=${{ matrix.target }} -x cargoBuild
6 changes: 2 additions & 4 deletions .github/workflows/rust-clippy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,13 @@ jobs:
security-events: write
steps:
- name: Checkout code
uses: actions/checkout@v2
uses: actions/checkout@v6

- name: Install Rust toolchain
uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af #@v1
uses: dtolnay/rust-toolchain@stable
with:
profile: minimal
toolchain: stable
components: clippy
override: true

- name: Install required cargo
run: cargo install clippy-sarif sarif-fmt
Expand Down
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## v0.2.10 - TBD

- Update dependencies and modernize gradle project

## v0.2.9 - 2024/08/21

- Update dependencies
Expand Down
Loading
Loading