Build duckdb_java linux-amd64-musl #242
Workflow file for this run
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/manylinux_2_28_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:20.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-linux-amd64-musl: | |
name: Java Musllinux (amd64) | |
runs-on: ubuntu-latest | |
container: | |
image: alpine:latest | |
env: | |
GEN: ninja | |
DUCKDB_PLATFORM: linux_amd64_musl | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ inputs.git_ref }} | |
- name: Prepare Alpine Container | |
shell: sh | |
run: | | |
# Update package lists and install essential build tools | |
apk update | |
apk add --no-cache bash boost-dev build-base cmake gcc g++ git libstdc++ make ninja openjdk17 openjdk17-jdk pkgconfig | |
rm -rf /var/cache/apk/* | |
# Set Java environment variables | |
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk" >> $GITHUB_ENV | |
echo "/usr/lib/jvm/java-17-openjdk/bin:${PATH}" >> $GITHUB_PATH | |
- 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-musl.jar | |
./scripts/upload-assets-to-staging.sh github_release duckdb_jdbc-linux-amd64-musl.jar | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: java-linux-amd64-musl | |
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 | |
- java-linux-amd64-musl | |
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 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: java-linux-amd64-musl | |
path: jdbc-artifacts/java-linux-amd64-musl | |
- name: Combine JARs | |
shell: bash | |
run: | | |
mkdir -m 700 -p ~/.gnupg | |
echo -e "passphrase asdf\npinentry-mode loopback\nno-tty\nbatch\n" > ~/.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/manylinux_2_28_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) |