| # 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: 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: 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_SHORT}-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: | |
| ["/bin/bash", "-c", | |
| "git config --global --add safe.directory /arrow-java && | |
| /arrow-java/ci/scripts/jni_manylinux_build.sh /arrow-java /arrow /build/java /arrow-java/jni"] |