# 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. name: Java on: push: paths: - '.dockerignore' - '.github/workflows/java.yml' - 'ci/docker/*java*' - 'ci/scripts/java*.sh' - 'ci/scripts/util_*.sh' - 'docker-compose.yml' - 'format/Flight.proto' - 'java/**' pull_request: paths: - '.dockerignore' - '.github/workflows/java.yml' - 'ci/docker/*java*' - 'ci/scripts/java*.sh' - 'ci/scripts/util_*.sh' - 'docker-compose.yml' - 'format/Flight.proto' - 'java/**' concurrency: group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }} cancel-in-progress: true permissions: contents: read env: ARCHERY_DEBUG: 1 DOCKER_VOLUME_PREFIX: ".docker/" jobs: ubuntu: name: AMD64 Ubuntu 22.04 Java JDK ${{ matrix.jdk }} Maven ${{ matrix.maven }} runs-on: ubuntu-latest if: ${{ !contains(github.event.pull_request.title, 'WIP') }} timeout-minutes: 30 strategy: fail-fast: false matrix: jdk: [11, 17, 21, 22] maven: [3.9.6] image: [java] env: JDK: ${{ matrix.jdk }} MAVEN: ${{ matrix.maven }} steps: - name: Checkout Arrow uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 with: fetch-depth: 0 submodules: recursive - name: Cache Docker Volumes uses: actions/cache@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 with: path: .docker key: maven-${{ hashFiles('java/**') }} restore-keys: maven- - name: Setup Python uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: 3.8 - name: Setup Archery run: pip install -e dev/archery[docker] - name: Execute Docker Build env: ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }} ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} run: | archery docker run \ -e CI=true \ -e "DEVELOCITY_ACCESS_KEY=$DEVELOCITY_ACCESS_KEY" \ ${{ matrix.image }} - name: Docker Push if: >- success() && github.event_name == 'push' && github.repository == 'apache/arrow' && github.ref_name == 'main' env: ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }} ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} continue-on-error: true run: archery docker push ${{ matrix.image }} macos: name: AMD64 macOS 12 Java JDK ${{ matrix.jdk }} runs-on: macos-12 if: ${{ !contains(github.event.pull_request.title, 'WIP') }} timeout-minutes: 30 strategy: fail-fast: false matrix: jdk: [11] steps: - name: Set up Java uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: ${{ matrix.jdk }} - name: Checkout Arrow uses: actions/checkout@v4 with: fetch-depth: 0 submodules: recursive - name: Build shell: bash env: DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} run: ci/scripts/java_build.sh $(pwd) $(pwd)/build - name: Test shell: bash env: DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} run: ci/scripts/java_test.sh $(pwd) $(pwd)/build windows: name: AMD64 Windows Server 2022 Java JDK ${{ matrix.jdk }} runs-on: windows-latest if: ${{ !contains(github.event.pull_request.title, 'WIP') }} timeout-minutes: 30 strategy: fail-fast: false matrix: jdk: [11] steps: - name: Set up Java uses: actions/setup-java@v4 with: java-version: ${{ matrix.jdk }} distribution: 'temurin' - name: Checkout Arrow uses: actions/checkout@v4 with: fetch-depth: 0 submodules: recursive - name: Build shell: bash env: DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} run: ci/scripts/java_build.sh $(pwd) $(pwd)/build - name: Test shell: bash env: DEVELOCITY_ACCESS_KEY: ${{ secrets.GE_ACCESS_TOKEN }} run: ci/scripts/java_test.sh $(pwd) $(pwd)/build