From 2a7601dfa81518c24a496d322ca332d352d5782d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9B=A7=E5=9B=A7?= Date: Sat, 8 Jul 2023 13:16:29 -0400 Subject: [PATCH] Add Java CI build for Windows, Linux, and Mac ARM (#1782) * Update mac-java-workflow.yml * Update mac-java-workflow.yml * Update mac-java-workflow.yml * Update mac-java-workflow.yml * Update mac-java-workflow.yml * Update mac-java-workflow.yml * Linux and Windows Java build --- .github/workflows/linux-java-workflow.yml | 22 ++++++++++++++ .github/workflows/mac-java-workflow.yml | 32 ++++++++++++--------- .github/workflows/windows-java-workflow.yml | 21 ++++++++++++++ scripts/pip-package/Dockerfile | 3 +- 4 files changed, 63 insertions(+), 15 deletions(-) create mode 100644 .github/workflows/linux-java-workflow.yml create mode 100644 .github/workflows/windows-java-workflow.yml diff --git a/.github/workflows/linux-java-workflow.yml b/.github/workflows/linux-java-workflow.yml new file mode 100644 index 0000000000..065aed1d19 --- /dev/null +++ b/.github/workflows/linux-java-workflow.yml @@ -0,0 +1,22 @@ +name: Build-Linux-Java-Lib +on: + workflow_dispatch: + +jobs: + build-linux-java: + runs-on: kuzu-self-hosted-linux-building + steps: + - uses: actions/checkout@v3 + + - name: Build Java lib for Linux + run: bash make java NUM_THREADS=$(nproc) + + - uses: actions/upload-artifact@v3 + with: + name: libkuzu-java-linux-x86_64 + path: tools/java_api/build/libkuzu_java_native* + + - uses: actions/upload-artifact@v3 + with: + name: kuzu-linux-jar + path: tools/java_api/build/*.jar diff --git a/.github/workflows/mac-java-workflow.yml b/.github/workflows/mac-java-workflow.yml index 52a9dce0b1..b2b60535d8 100644 --- a/.github/workflows/mac-java-workflow.yml +++ b/.github/workflows/mac-java-workflow.yml @@ -3,18 +3,22 @@ on: workflow_dispatch: jobs: -# build-mac-java-arm: -# runs-on: self-hosted-mac-arm -# steps: -# - uses: actions/checkout@v3 + build-mac-java-arm: + runs-on: self-hosted-mac-arm + steps: + - uses: actions/checkout@v3 -# - name: Build Java lib for Apple Silicon -# run: make java NUM_THREADS=8 - -# - uses: actions/upload-artifact@v3 -# with: -# name: mac-arm64-java-lib -# path: tools/java_api/libkuzu_java_native* + - name: Build Java lib for Apple Silicon + run: | + env JAVA_HOME=$(/usr/libexec/java_home) make java NUM_THREADS=8 + env: + MACOSX_DEPLOYMENT_TARGET: 11.0 + ARCHFLAGS: "-arch arm64" + + - uses: actions/upload-artifact@v3 + with: + name: libkuzu-java-osx-arm64 + path: tools/java_api/build/libkuzu_java_native* build-mac-java-x86: runs-on: macos-latest @@ -23,12 +27,12 @@ jobs: - name: Build Java lib for Intel run: | - echo "JAVA_HOME=$JAVA_HOME_11_X64" >> $GITHUB_ENV - make java NUM_THREADS=3 + env JAVA_HOME=$JAVA_HOME_11_X64 make java NUM_THREADS=3 env: MACOSX_DEPLOYMENT_TARGET: 10.15 + ARCHFLAGS: "-arch x86_64" - uses: actions/upload-artifact@v3 with: - name: mac-arm64-java-lib + name: libkuzu-java-osx-x86_64 path: tools/java_api/build/libkuzu_java_native* diff --git a/.github/workflows/windows-java-workflow.yml b/.github/workflows/windows-java-workflow.yml new file mode 100644 index 0000000000..9b563d7205 --- /dev/null +++ b/.github/workflows/windows-java-workflow.yml @@ -0,0 +1,21 @@ +name: Build-Windows-NodeJS-Module + +on: + workflow_dispatch: + +jobs: + build-windows-java: + runs-on: self-hosted-windows + steps: + - uses: actions/checkout@v3 + + - name: Build Java lib for Windows + shell: cmd + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" + make java NUM_THREADS=48 + + - uses: actions/upload-artifact@v3 + with: + name: libkuzu-java-win-x86_64 + path: tools/java_api/build/libkuzu_java_native* diff --git a/scripts/pip-package/Dockerfile b/scripts/pip-package/Dockerfile index 44470f043f..5f2f3ca1ab 100644 --- a/scripts/pip-package/Dockerfile +++ b/scripts/pip-package/Dockerfile @@ -3,7 +3,7 @@ FROM quay.io/pypa/manylinux2014_x86_64 # Install dependencies RUN yum --disablerepo=epel -y upgrade curl ca-certificates RUN yum update -y -RUN yum install -y cmake nodejs npm jq git perl-Digest-SHA libicu libicu-devel libcurl-devel openssl-devel +RUN yum install -y cmake nodejs npm jq git perl-Digest-SHA libicu libicu-devel libcurl-devel openssl-devel java-11-openjdk-devel RUN useradd --create-home runner USER runner @@ -23,4 +23,5 @@ RUN /opt/python/cp310-cp310/bin/python -m pip install --user pipx RUN /opt/python/cp310-cp310/bin/python -m pipx ensurepath RUN /opt/python/cp310-cp310/bin/python -m pipx install pydoc-markdown +ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk ENTRYPOINT ["./listener.sh"]