Merge pull request #97 from duckdb/upgrade-112 #186
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Java JDBC | |
on: | |
push: | |
pull_request: | |
workflow_call: | |
workflow_dispatch: | |
repository_dispatch: | |
env: | |
GH_TOKEN: ${{ secrets.GH_TOKEN }} | |
OVERRIDE_GIT_DESCRIBE: ${{ inputs.override_git_describe }} | |
jobs: | |
format_check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- run: make format-check | |
java-linux-amd64: | |
name: Java Linux (amd64) | |
runs-on: ubuntu-latest | |
container: | |
image: quay.io/pypa/manylinux2014_x86_64 | |
env: | |
GEN: ninja | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- uses: ./.github/actions/manylinux_2014_setup | |
with: | |
ninja-build: 1 | |
ccache: 1 | |
jdk: 1 | |
python_alias: 1 | |
aws-cli: 1 | |
- name: Build | |
shell: bash | |
run: make release | |
- name: Java Tests | |
shell: bash | |
if: ${{ inputs.skip_tests != 'true' }} | |
run: make test | |
- name: Deploy | |
shell: bash | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.S3_DUCKDB_STAGING_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_DUCKDB_STAGING_KEY }} | |
run: | | |
cp build/release/duckdb_jdbc.jar duckdb_jdbc-linux-amd64.jar | |
./scripts/upload-assets-to-staging.sh github_release duckdb_jdbc-linux-amd64.jar | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: java-linux-amd64 | |
path: | | |
build/release/duckdb_jdbc.jar | |
java-linux-aarch64: | |
name: Java Linux (aarch64) | |
runs-on: ubuntu-latest | |
container: | |
image: ubuntu:18.04 | |
needs: java-linux-amd64 | |
env: | |
GEN: ninja | |
DUCKDB_PLATFORM: linux_arm64 | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- uses: ./.github/actions/ubuntu_18_setup | |
with: | |
ccache: 1 | |
aarch64_cross_compile: 1 | |
- name: Install Stuff | |
shell: bash | |
run: > | |
curl -L https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_linux_hotspot_8u345b01.tar.gz | tar xvz | |
- name: Build | |
shell: bash | |
run: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ OVERRIDE_JDBC_OS_ARCH=arm64 make release | |
- name: Deploy | |
shell: bash | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.S3_DUCKDB_STAGING_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_DUCKDB_STAGING_KEY }} | |
run: | | |
cp build/release/duckdb_jdbc.jar duckdb_jdbc-linux-aarch64.jar | |
# ./scripts/upload-assets-to-staging.sh github_release duckdb_jdbc-linux-aarch64.jar | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: java-linux-aarch64 | |
path: | | |
build/release/duckdb_jdbc.jar | |
java-windows-amd64: | |
name: Java Windows (amd64) | |
runs-on: windows-2019 | |
needs: java-linux-amd64 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Setup Ccache | |
uses: hendrikmuhs/ccache-action@main | |
with: | |
key: ${{ github.job }} | |
save: ${{ github.ref == 'refs/heads/main' || github.repository != 'duckdb/duckdb-java' }} | |
- name: Build | |
shell: bash | |
run: make release | |
- name: Java Tests | |
if: ${{ inputs.skip_tests != 'true' }} | |
shell: bash | |
run: | | |
ls -R . | |
make test | |
- name: Deploy | |
shell: bash | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.S3_DUCKDB_STAGING_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_DUCKDB_STAGING_KEY }} | |
run: | | |
cp build/release/duckdb_jdbc.jar duckdb_jdbc-windows-amd64.jar | |
./scripts/upload-assets-to-staging.sh github_release duckdb_jdbc-windows-amd64.jar | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: java-windows-amd64 | |
path: | | |
build/release/duckdb_jdbc.jar | |
java-osx-universal: | |
name: Java OSX (Universal) | |
runs-on: macos-14 | |
needs: java-linux-amd64 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.12" | |
- name: Setup Ccache | |
uses: hendrikmuhs/ccache-action@main | |
with: | |
key: ${{ github.job }} | |
save: ${{ github.ref == 'refs/heads/main' }} | |
- name: Build | |
shell: bash | |
run: make release | |
- name: Java Tests | |
if: ${{ inputs.skip_tests != 'true' }} | |
shell: bash | |
run: make test | |
- name: See if this actually universal | |
shell: bash | |
run: lipo -archs build/release/libduckdb_java.so_osx_universal | grep "x86_64 arm64" | |
- name: Deploy | |
shell: bash | |
env: | |
AWS_ACCESS_KEY_ID: ${{ secrets.S3_DUCKDB_STAGING_ID }} | |
AWS_SECRET_ACCESS_KEY: ${{ secrets.S3_DUCKDB_STAGING_KEY }} | |
run: | | |
cp build/release/duckdb_jdbc.jar duckdb_jdbc-osx-universal.jar | |
./scripts/upload-assets-to-staging.sh github_release duckdb_jdbc-osx-universal.jar | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: java-osx-universal | |
path: | | |
build/release/duckdb_jdbc.jar | |
java-combine: | |
if: ${{ inputs.override_git_describe == '' }} | |
name: Java Combine | |
runs-on: ubuntu-latest | |
needs: | |
- java-linux-aarch64 | |
- java-linux-amd64 | |
- java-windows-amd64 | |
- java-osx-universal | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- shell: bash | |
run: mkdir jdbc-artifacts | |
- uses: actions/download-artifact@v3 | |
with: | |
name: java-linux-aarch64 | |
path: jdbc-artifacts/java-linux-aarch64 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: java-linux-amd64 | |
path: jdbc-artifacts/java-linux-amd64 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: java-windows-amd64 | |
path: jdbc-artifacts/java-windows-amd64 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: java-osx-universal | |
path: jdbc-artifacts/java-osx-universal | |
- name: Combine JARs | |
shell: bash | |
run: | | |
mkdir -p ~/.gnupg | |
echo "pinentry-mode loopback" > ~/.gnupg/gpg.conf | |
if [[ "$GITHUB_REF" =~ ^(refs/heads/main|refs/tags/v.+)$ && "$GITHUB_REPOSITORY" = "duckdb/duckdb-java" ]] ; then | |
export XML=' | |
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" | |
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 | |
https://maven.apache.org/xsd/settings-1.0.0.xsd"> | |
<servers> | |
<server> | |
<id>ossrh</id> | |
<username>hfmuehleisen</username> <!-- Sonatype OSSRH JIRA user/pw --> | |
<password>PASSWORD</password> | |
</server> | |
</servers> | |
</settings> ' | |
mkdir ~/.m2 | |
echo $XML | sed "s/PASSWORD/${{ secrets.MAVEN_PASSWORD }}/" > ~/.m2/settings.xml | |
echo "${{ secrets.MAVEN_PGP_PK }}" | base64 -d > maven_pgp_key | |
gpg --batch --import maven_pgp_key | |
python scripts/jdbc_maven_deploy.py ${{ github.ref_name }} jdbc-artifacts . | |
fi | |
ls -lahR jdbc-artifacts | |
- name: Upload artifacts | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: java-jars | |
path: | | |
jdbc-artifacts | |
jdbc-compliance: | |
name: JDBC Compliance | |
runs-on: ubuntu-20.04 | |
if: ${{ inputs.skip_tests != 'true' }} | |
needs: java-linux-amd64 | |
container: quay.io/pypa/manylinux2014_x86_64 | |
env: | |
BUILD_JDBC: 1 | |
GEN: ninja | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- uses: ./.github/actions/manylinux_2014_setup | |
with: | |
ninja-build: 1 | |
ccache: 1 | |
jdk: 1 | |
python_alias: 1 | |
aws-cli: 1 | |
- name: Install | |
shell: bash | |
run: | | |
git clone https://github.com/cwida/jdbccts.git | |
- name: Setup Ccache | |
uses: hendrikmuhs/[email protected] # Note: pinned due to GLIBC incompatibility in later releases | |
with: | |
key: ${{ github.job }} | |
save: ${{ github.ref == 'refs/heads/main' || github.repository != 'duckdb/duckdb-java' }} | |
- name: Build | |
shell: bash | |
run: make release | |
- name: Test | |
shell: bash | |
run: (cd jdbccts && make DUCKDB_JAR=../build/release/duckdb_jdbc.jar test) |