| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| # Usage |
| # ----- |
| # |
| # The docker compose file is parametrized using environment variables, the |
| # defaults are set in .env file. |
| # |
| # Example: |
| # $ ARCH=arm64v8 docker compose build java |
| # $ ARCH=arm64v8 docker compose run java |
| |
| volumes: |
| ccache-cache: |
| name: ccache-cache |
| maven-cache: |
| name: maven-cache |
| |
| services: |
| ubuntu: |
| # Build and test arrow-java on Ubuntu. |
| # |
| # Usage: |
| # docker compose build ubuntu |
| # docker compose run ubuntu |
| # Parameters: |
| # MAVEN: 3.9.9 |
| # JDK: 11, 17, 21 |
| image: ${ARCH}/maven:${MAVEN}-eclipse-temurin-${JDK} |
| volumes: |
| - .:/arrow-java:delegated |
| - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated |
| command: |
| /bin/bash -c " |
| /arrow-java/ci/scripts/build.sh /arrow-java /build /jni && |
| /arrow-java/ci/scripts/test.sh /arrow-java /build /jni" |
| |
| conda-jni-cdata: |
| # Builds and tests just the C Data Interface JNI library and JARs. |
| # (No dependencies on arrow-cpp.) |
| # This build isn't meant for distribution. It's for testing only. |
| # |
| # Usage: |
| # docker compose build conda-jni-cdata |
| # docker compose run conda-jni-cdata |
| # Parameters: |
| # MAVEN: 3.9.9 |
| # JDK: 11, 17, 21 |
| image: ${REPO}:${ARCH}-conda-java-${JDK}-maven-${MAVEN}-jni-integration |
| build: |
| context: . |
| dockerfile: ci/docker/conda-jni.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-conda-java-${JDK}-maven-${MAVEN}-jni-integration |
| args: |
| jdk: ${JDK} |
| maven: ${MAVEN} |
| # required to use micromamba with rootless docker |
| # https://github.com/mamba-org/micromamba-docker/issues/407#issuecomment-2088523507 |
| user: root |
| volumes: |
| - .:/arrow-java:delegated |
| - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated |
| environment: |
| ARROW_JAVA_CDATA: "ON" |
| command: |
| /bin/bash -c " |
| /arrow-java/ci/scripts/jni_build.sh /arrow-java /build/jni /build /jni && |
| /arrow-java/ci/scripts/build.sh /arrow-java /build /jni && |
| /arrow-java/ci/scripts/test.sh /arrow-java /build /jni" |
| |
| vcpkg-jni: |
| # Builds all the JNI libraries, but not the JARs. |
| # (Requires arrow-cpp.) |
| # The artifacts from this build are meant to be used for packaging. |
| # |
| # Usage: |
| # docker compose build vcpkg-jni |
| # docker compose run vcpkg-jni |
| image: ${REPO}:${ARCH}-vcpkg-jni-${VCPKG} |
| build: |
| context: . |
| dockerfile: ci/docker/vcpkg-jni.dockerfile |
| cache_from: |
| - ${REPO}:${ARCH}-vcpkg-jni-${VCPKG} |
| args: |
| base: ${ARROW_REPO}:${ARCH}-cpp-jni-${VCPKG} |
| volumes: |
| - .:/arrow-java:delegated |
| - ${ARROW_REPO_ROOT}:/arrow:delegated |
| - ${DOCKER_VOLUME_PREFIX}ccache-cache:/ccache:delegated |
| - ${DOCKER_VOLUME_PREFIX}maven-cache:/root/.m2:delegated |
| environment: |
| ARROW_JAVA_CDATA: "ON" |
| CCACHE_DIR: "/ccache" |
| command: |
| ["git config --global --add safe.directory /arrow-java && \ |
| /arrow-java/ci/scripts/jni_manylinux_build.sh /arrow-java /arrow /build/java /arrow-java/jni"] |