Skip to content

ci(java): use Debian 10 with glibc 2.28 for publishing Java artifacts #144

ci(java): use Debian 10 with glibc 2.28 for publishing Java artifacts

ci(java): use Debian 10 with glibc 2.28 for publishing Java artifacts #144

Workflow file for this run

name: Build and publish Java packages
on:
release:
# Use released instead of published, since we don't publish preview/beta
# versions
types: [released]
pull_request:
types:
- opened
- synchronize
- ready_for_review
- reopened
paths:
- .github/workflows/java-publish.yml
jobs:
macos-arm64:
name: Build on MacOS Arm64
runs-on: macos-14
timeout-minutes: 60
defaults:
run:
working-directory: ./java
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Install dependencies
run: |
brew install protobuf
- name: Build release
run: |
cargo build --release
- uses: actions/upload-artifact@v4
with:
name: liblance_jni_darwin_aarch64.zip
path: target/release/liblance_jni.dylib
retention-days: 1
if-no-files-found: error
linux-arm64:
name: Build on Linux Arm64
runs-on: ubuntu-24.04
timeout-minutes: 60
defaults:

Check failure on line 44 in .github/workflows/java-publish.yml

View workflow run for this annotation

GitHub Actions / Build and publish Java packages

Invalid workflow file

The workflow is not valid. .github/workflows/java-publish.yml (Line: 44, Col: 14): Unexpected value ''
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: arm64
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and run in ARM64 container
run: |
docker run --platform linux/arm64 -v ${{ github.workspace }}:/workspace -w /workspace ubuntu:20.04 bash -c "
ls
set -ex
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --assume-yes \
apt-transport-https \
ca-certificates \
curl \
gpg \
bash \
less \
openssl \
libssl-dev \
pkg-config \
libsqlite3-dev \
libsqlite3-0 \
libreadline-dev \
git \
cmake \
dh-autoreconf \
clang \
g++ \
gcc-10 \
libc++-dev \
libc++abi-dev \
libprotobuf-dev \
protobuf-compiler \
libncurses5-dev \
libncursesw5-dev \
libudev-dev \
libhidapi-dev \
zip
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain stable
source \$HOME/.cargo/env
cd java
cargo build --release
cp ../target/release/liblance_jni.so liblance_jni.so
"
- uses: actions/upload-artifact@v4
with:
name: liblance_jni_linux_aarch64.zip
path: target/release/liblance_jni.so
retention-days: 1
if-no-files-found: error
linux-x86:
runs-on: ubuntu-24.04
timeout-minutes: 60
needs: [macos-arm64, linux-arm64]
defaults:
run:
working-directory: ./java
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: Swatinem/rust-cache@v2
- name: Set up Java 8
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 8
cache: "maven"
server-id: ossrh
server-username: SONATYPE_USER
server-password: SONATYPE_TOKEN
gpg-private-key: ${{ secrets.GPG_PRIVATE_KEY }}
gpg-passphrase: ${{ secrets.GPG_PASSPHRASE }}
- name: Install dependencies
run: |
sudo apt -y -qq update
sudo apt install -y protobuf-compiler libssl-dev pkg-config
- name: Download artifact
uses: actions/download-artifact@v4
- name: Copy native libs
run: |
mkdir -p ./core/target/classes/nativelib/darwin-aarch64 ./core/target/classes/nativelib/linux-aarch64
cp ../liblance_jni_darwin_aarch64.zip/liblance_jni.dylib ./core/target/classes/nativelib/darwin-aarch64/liblance_jni.dylib
cp ../liblance_jni_linux_aarch64.zip/liblance_jni.so ./core/target/classes/nativelib/linux-aarch64/liblance_jni.so
- name: Set github
run: |
git config --global user.email "Lance Github Runner"
git config --global user.name "[email protected]"
- name: Dry run
if: github.event_name == 'pull_request'
run: |
mvn --batch-mode -DskipTests -Drust.release.build=true package
# - name: Publish with Java 8
# if: github.event_name == 'release'
# run: |
# echo "use-agent" >> ~/.gnupg/gpg.conf
# echo "pinentry-mode loopback" >> ~/.gnupg/gpg.conf
# export GPG_TTY=$(tty)
# mvn --batch-mode -DskipTests -Drust.release.build=true -DpushChanges=false -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }} deploy -P deploy-to-ossrh -P shade-jar
# env:
# SONATYPE_USER: ${{ secrets.SONATYPE_USER }}
# SONATYPE_TOKEN: ${{ secrets.SONATYPE_TOKEN }}