| # 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: Verification |
| |
| on: |
| workflow_dispatch: |
| inputs: |
| version: |
| description: "Version to verify" |
| required: false |
| type: string |
| default: "" |
| rc: |
| description: "RC to verify" |
| required: false |
| type: string |
| default: "" |
| schedule: |
| - cron: '5 0 * * 0' |
| pull_request: |
| branches: |
| - main |
| paths: |
| - 'docker-compose.yaml' |
| - '.github/workflows/verify.yaml' |
| - 'dev/release/verify-release-candidate.sh' |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| verify: |
| name: "${{ matrix.config.label }}" |
| runs-on: ${{ matrix.config.os }} |
| |
| strategy: |
| fail-fast: false |
| matrix: |
| config: |
| - {os: macOS-latest, label: macos} |
| - {os: windows-latest, label: windows, extra_cmake_install: "--config=Debug"} |
| - {os: ubuntu-latest, label: ubuntu} |
| |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| path: src |
| fetch-depth: 0 |
| persist-credentials: false |
| |
| # For R verification |
| - uses: r-lib/actions/setup-tinytex@v2 |
| - uses: r-lib/actions/setup-pandoc@v2 |
| - uses: r-lib/actions/setup-r@v2 |
| with: |
| use-public-rspm: true |
| windows-path-include-rtools: false |
| windows-path-include-mingw: false |
| - uses: r-lib/actions/setup-r-dependencies@v2 |
| with: |
| needs: check |
| working-directory: src/r |
| |
| - name: Cache Arrow C++ Build |
| id: cache-arrow-build |
| uses: actions/cache@v3 |
| with: |
| path: arrow |
| key: arrow-${{ runner.os }}-6 |
| |
| - name: Build Arrow C++ |
| if: steps.cache-arrow-build.outputs.cache-hit != 'true' |
| shell: bash |
| run: | |
| curl https://dlcdn.apache.org/arrow/arrow-14.0.2/apache-arrow-14.0.2.tar.gz | \ |
| tar -zxf - |
| mkdir arrow-build && cd arrow-build |
| cmake ../apache-arrow-14.0.2/cpp -DCMAKE_INSTALL_PREFIX=../arrow |
| cmake --build . |
| cmake --install . --prefix=../arrow ${{ matrix.config.extra_cmake_install }} |
| cd .. |
| |
| - name: Set CMake options (Windows) |
| if: matrix.config.label == 'windows' |
| shell: bash |
| run: | |
| echo "NANOARROW_CMAKE_OPTIONS=${NANOARROW_CMAKE_OPTIONS} -DNANOARROW_ARROW_STATIC=ON -DArrow_DIR=$(pwd -W)/arrow/lib/cmake/Arrow -Dgtest_force_shared_crt=ON" >> $GITHUB_ENV |
| |
| - name: Set CMake options (POSIX) |
| if: matrix.config.label != 'windows' |
| shell: bash |
| run: | |
| echo "NANOARROW_CMAKE_OPTIONS=${NANOARROW_CMAKE_OPTIONS} -DArrow_DIR=$(pwd)/arrow/lib/cmake/Arrow" >> $GITHUB_ENV |
| |
| - name: Run dev/release/verify-release-candidate.sh |
| shell: bash |
| env: |
| VERBOSE: "1" |
| run: | |
| mkdir nanoarrow-verify-tmp |
| export NANOARROW_TMPDIR=`pwd`/nanoarrow-verify-tmp |
| cd src/dev/release |
| ./verify-release-candidate.sh ${{ inputs.version }} ${{ inputs.rc }} |
| |
| - name: Upload temp directory |
| if: failure() |
| uses: actions/upload-artifact@main |
| with: |
| path: nanoarrow-verify-tmp |
| name: nanoarrow-verify-tmp |
| |
| verify-docker: |
| name: "docker-${{ matrix.config.platform }}-${{ matrix.config.arch }}${{ matrix.config.extra_label}}" |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| config: |
| - {platform: "ubuntu", arch: "amd64"} |
| - {platform: "fedora", arch: "amd64"} |
| - {platform: "archlinux", arch: "amd64"} |
| - {platform: "alpine", arch: "amd64"} |
| - { |
| platform: "centos7", |
| arch: "amd64", |
| # Currently the Python on the centos7 image is 3.6, which does not support |
| # new enough setuptools to build the Python package. |
| compose_args: "-e NANOARROW_ACCEPT_IMPORT_GPG_KEYS_ERROR=1 -e TEST_PYTHON=0" |
| } |
| - { |
| platform: "ubuntu", |
| arch: "amd64", |
| extra_label: "-memcheck", |
| compose_args: "-e TEST_WITH_MEMCHECK=1 -e TEST_C_BUNDLED=0" |
| } |
| - { |
| platform: "ubuntu", |
| arch: "amd64", |
| extra_label: "-c99", |
| compose_args: "-e NANOARROW_CMAKE_OPTIONS=-DCMAKE_C_STANDARD=99" |
| } |
| - {platform: "ubuntu", arch: "arm64", compose_args: "-e TEST_C_BUNDLED=0"} |
| - {platform: "alpine", arch: "s390x", compose_args: "-e TEST_C_BUNDLED=0"} |
| |
| steps: |
| - uses: actions/checkout@v3 |
| with: |
| path: src |
| fetch-depth: 0 |
| persist-credentials: false |
| |
| - name: Set up QEMU |
| if: matrix.config.arch != 'amd64' |
| uses: docker/setup-qemu-action@v2 |
| |
| - name: Run docker compose verify |
| env: |
| NANOARROW_ARCH: ${{ matrix.config.arch }} |
| NANOARROW_PLATFORM: ${{ matrix.config.platform }} |
| DOCKER_DEFAULT_PLATFORM: linux/${{ matrix.config.arch }} |
| NANOARROW_VERIFY_ARGS: ${{ inputs.version }} ${{ inputs.rc }} |
| |
| run: | |
| cd src |
| echo "::group::Docker Pull" |
| docker compose run -e GITHUB_ACTIONS ${{ matrix.config.compose_args }} verify |