From 2ab4f4bbab2b345c1b25e50f207a62b5f7168d48 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Thu, 15 Jan 2026 15:15:15 -0800 Subject: [PATCH 1/6] Attempt to start ODBC nightly release Upload ODBC MSI installer to `${{ secrets.NIGHTLIES_RSYNC_PATH }}/arrow/odbc` --- .github/workflows/cpp_extra.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index f353fe86340..a10c692c418 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -457,6 +457,26 @@ jobs: name: flight-sql-odbc-msi-installer path: build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi if-no-files-found: error + # Upload ODBC installer as nightly release in scheduled runs + - name: Prepare ODBC installer for sync + if: github.event_name == 'schedule' + run: | + mkdir odbc-installer + Move-Item build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi odbc-installer/ + tree odbc-installer + - name: Sync to Remote + if: github.event_name == 'schedule' + uses: ./arrow/.github/actions/sync-nightlies + with: + upload: true + switches: -avzh --update --delete --progress + local_path: odbc-installer + remote_path: ${{ secrets.NIGHTLIES_RSYNC_PATH }}/arrow/odbc + remote_host: ${{ secrets.NIGHTLIES_RSYNC_HOST }} + remote_port: ${{ secrets.NIGHTLIES_RSYNC_PORT }} + remote_user: ${{ secrets.NIGHTLIES_RSYNC_USER }} + remote_key: ${{ secrets.NIGHTLIES_RSYNC_KEY }} + remote_host_key: ${{ secrets.NIGHTLIES_RSYNC_HOST_KEY }} report-extra-cpp: if: github.event_name == 'schedule' && always() From da26c852adf90fc4d2158f3ddab33b1ea0b9cd25 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 16 Jan 2026 14:08:20 -0800 Subject: [PATCH 2/6] Test workflow and temporarily disable `if` check for schedule --- .github/workflows/cpp_extra.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index a10c692c418..0d6c46fd217 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -459,13 +459,13 @@ jobs: if-no-files-found: error # Upload ODBC installer as nightly release in scheduled runs - name: Prepare ODBC installer for sync - if: github.event_name == 'schedule' + # if: github.event_name == 'schedule' # -AL- for testing purpose, temporarily disable `if` check run: | mkdir odbc-installer - Move-Item build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi odbc-installer/ + Move-Item "build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi" odbc-installer/ tree odbc-installer - name: Sync to Remote - if: github.event_name == 'schedule' + # if: github.event_name == 'schedule' uses: ./arrow/.github/actions/sync-nightlies with: upload: true From 90ffe7277839f0ea04703a6099d3d79030931d14 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 16 Jan 2026 15:13:32 -0800 Subject: [PATCH 3/6] Move ODBC msi installer to root path --- .github/workflows/cpp_extra.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 0d6c46fd217..13a017f85bf 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -451,18 +451,20 @@ jobs: wix --version cd build/cpp cpack + cd ../.. + Move-Item -Path "build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi" -Destination "." - name: Upload the artifacts to the job uses: actions/upload-artifact@v6 with: name: flight-sql-odbc-msi-installer - path: build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi + path: Apache Arrow Flight SQL ODBC-*-win64.msi if-no-files-found: error # Upload ODBC installer as nightly release in scheduled runs - name: Prepare ODBC installer for sync # if: github.event_name == 'schedule' # -AL- for testing purpose, temporarily disable `if` check run: | mkdir odbc-installer - Move-Item "build/cpp/Apache Arrow Flight SQL ODBC-*-win64.msi" odbc-installer/ + Move-Item "Apache Arrow Flight SQL ODBC-*-win64.msi" odbc-installer/ tree odbc-installer - name: Sync to Remote # if: github.event_name == 'schedule' From 023eee8bc3a6b9d417dab7eeb44966588dc3581d Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Fri, 16 Jan 2026 15:24:00 -0800 Subject: [PATCH 4/6] Test GitHub Release CI --- .github/workflows/cpp_extra.yml | 62 +++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 19 deletions(-) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 13a017f85bf..0c524616cc3 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -459,26 +459,50 @@ jobs: name: flight-sql-odbc-msi-installer path: Apache Arrow Flight SQL ODBC-*-win64.msi if-no-files-found: error - # Upload ODBC installer as nightly release in scheduled runs - - name: Prepare ODBC installer for sync - # if: github.event_name == 'schedule' # -AL- for testing purpose, temporarily disable `if` check + + # -AL- reusing code from package Linux + - name: Wait for creating GitHub Release + if: github.ref_type == 'tag' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # -AL- wait for tag name and `release_candidate.yml` workflow to end + # -AL- `--branch "${TAG}"` checks for branches triggered by tag + # -AL- ${GITHUB_REF_NAME}: tag name such as 23.0.0 run: | - mkdir odbc-installer - Move-Item "Apache Arrow Flight SQL ODBC-*-win64.msi" odbc-installer/ - tree odbc-installer - - name: Sync to Remote - # if: github.event_name == 'schedule' - uses: ./arrow/.github/actions/sync-nightlies - with: - upload: true - switches: -avzh --update --delete --progress - local_path: odbc-installer - remote_path: ${{ secrets.NIGHTLIES_RSYNC_PATH }}/arrow/odbc - remote_host: ${{ secrets.NIGHTLIES_RSYNC_HOST }} - remote_port: ${{ secrets.NIGHTLIES_RSYNC_PORT }} - remote_user: ${{ secrets.NIGHTLIES_RSYNC_USER }} - remote_key: ${{ secrets.NIGHTLIES_RSYNC_KEY }} - remote_host_key: ${{ secrets.NIGHTLIES_RSYNC_HOST_KEY }} + dev/release/utils-watch-gh-workflow.sh \ + ${GITHUB_REF_NAME} \ + release_candidate.yml + - name: Upload the artifacts to GitHub Release + if: github.ref_type == 'tag' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + gh release upload ${GITHUB_REF_NAME} \ + --clobber \ + "Apache Arrow Flight SQL ODBC-*-win64.msi" + # -AL- end of re-used code from package Linux + + # `test-gh-48872-odbc-nighly-release` tests GitHub Release CI + # # Upload ODBC installer as nightly release in scheduled runs + # - name: Prepare ODBC installer for sync + # # if: github.event_name == 'schedule' # -AL- for testing purpose, temporarily disable `if` check + # run: | + # mkdir odbc-installer + # Move-Item "Apache Arrow Flight SQL ODBC-*-win64.msi" odbc-installer/ + # tree odbc-installer + # - name: Sync to Remote + # # if: github.event_name == 'schedule' + # uses: ./arrow/.github/actions/sync-nightlies + # with: + # upload: true + # switches: -avzh --update --delete --progress + # local_path: odbc-installer + # remote_path: ${{ secrets.NIGHTLIES_RSYNC_PATH }}/arrow/odbc + # remote_host: ${{ secrets.NIGHTLIES_RSYNC_HOST }} + # remote_port: ${{ secrets.NIGHTLIES_RSYNC_PORT }} + # remote_user: ${{ secrets.NIGHTLIES_RSYNC_USER }} + # remote_key: ${{ secrets.NIGHTLIES_RSYNC_KEY }} + # remote_host_key: ${{ secrets.NIGHTLIES_RSYNC_HOST_KEY }} report-extra-cpp: if: github.event_name == 'schedule' && always() From e48aa04a15f47049fbe6490b15c7e840c5f3fa72 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Mon, 19 Jan 2026 14:43:46 -0800 Subject: [PATCH 5/6] Disable non-ODBC items Can revert this commit later if needed --- .github/workflows/cpp_extra.yml | 490 ++++++++++++++++---------------- 1 file changed, 245 insertions(+), 245 deletions(-) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 0c524616cc3..85f7a3344df 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -91,250 +91,250 @@ jobs: with: parent-workflow: cpp_extra - docker: - needs: check-labels - name: ${{ matrix.title }} - runs-on: ${{ matrix.runs-on }} - if: >- - needs.check-labels.outputs.force == 'true' || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') - timeout-minutes: 75 - strategy: - fail-fast: false - matrix: - include: - - image: alpine-linux-cpp - runs-on: ubuntu-latest - title: AMD64 Alpine Linux - - image: conda-cpp - run-options: >- - -e ARROW_USE_MESON=ON - runs-on: ubuntu-latest - title: AMD64 Ubuntu Meson - # TODO: We should remove this "continue-on-error: true" once GH-47207 is resolved - - continue-on-error: true - envs: - - DEBIAN=13 - image: debian-cpp - run-options: >- - -e CMAKE_CXX_STANDARD=23 - runs-on: ubuntu-latest - title: AMD64 Debian C++23 - env: - ARCHERY_DEBUG: 1 - ARROW_ENABLE_TIMING_TESTS: OFF - DOCKER_VOLUME_PREFIX: ".docker/" - steps: - - name: Checkout Arrow - uses: actions/checkout@v6 - with: - fetch-depth: 0 - submodules: recursive - - name: Cache Docker Volumes - uses: actions/cache@v5 - with: - path: .docker - key: extra-${{ matrix.image }}-${{ hashFiles('cpp/**') }} - restore-keys: extra-${{ matrix.image }}- - - name: Setup Python - uses: actions/setup-python@v6 - with: - python-version: 3 - - name: Setup Archery - run: python3 -m pip install -e dev/archery[docker] - - name: Execute Docker Build - continue-on-error: ${{ matrix.continue-on-error || false }} - env: - ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }} - ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} - ENVS: ${{ toJSON(matrix.envs) }} - run: | - # GH-40558: reduce ASLR to avoid ASAN/LSAN crashes - sudo sysctl -w vm.mmap_rnd_bits=28 - source ci/scripts/util_enable_core_dumps.sh - if [ "${ENVS}" != "null" ]; then - echo "${ENVS}" | jq -r '.[]' | while read env; do - echo "${env}" >> .env - done - fi - archery docker run ${{ matrix.run-options || '' }} ${{ 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 }} + # docker: + # needs: check-labels + # name: ${{ matrix.title }} + # runs-on: ${{ matrix.runs-on }} + # if: >- + # needs.check-labels.outputs.force == 'true' || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') + # timeout-minutes: 75 + # strategy: + # fail-fast: false + # matrix: + # include: + # - image: alpine-linux-cpp + # runs-on: ubuntu-latest + # title: AMD64 Alpine Linux + # - image: conda-cpp + # run-options: >- + # -e ARROW_USE_MESON=ON + # runs-on: ubuntu-latest + # title: AMD64 Ubuntu Meson + # # TODO: We should remove this "continue-on-error: true" once GH-47207 is resolved + # - continue-on-error: true + # envs: + # - DEBIAN=13 + # image: debian-cpp + # run-options: >- + # -e CMAKE_CXX_STANDARD=23 + # runs-on: ubuntu-latest + # title: AMD64 Debian C++23 + # env: + # ARCHERY_DEBUG: 1 + # ARROW_ENABLE_TIMING_TESTS: OFF + # DOCKER_VOLUME_PREFIX: ".docker/" + # steps: + # - name: Checkout Arrow + # uses: actions/checkout@v6 + # with: + # fetch-depth: 0 + # submodules: recursive + # - name: Cache Docker Volumes + # uses: actions/cache@v5 + # with: + # path: .docker + # key: extra-${{ matrix.image }}-${{ hashFiles('cpp/**') }} + # restore-keys: extra-${{ matrix.image }}- + # - name: Setup Python + # uses: actions/setup-python@v6 + # with: + # python-version: 3 + # - name: Setup Archery + # run: python3 -m pip install -e dev/archery[docker] + # - name: Execute Docker Build + # continue-on-error: ${{ matrix.continue-on-error || false }} + # env: + # ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }} + # ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }} + # ENVS: ${{ toJSON(matrix.envs) }} + # run: | + # # GH-40558: reduce ASLR to avoid ASAN/LSAN crashes + # sudo sysctl -w vm.mmap_rnd_bits=28 + # source ci/scripts/util_enable_core_dumps.sh + # if [ "${ENVS}" != "null" ]; then + # echo "${ENVS}" | jq -r '.[]' | while read env; do + # echo "${env}" >> .env + # done + # fi + # archery docker run ${{ matrix.run-options || '' }} ${{ 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 }} - msvc-arm64: - needs: check-labels - if: >- - needs.check-labels.outputs.force == 'true' || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') - name: ARM64 Windows 11 MSVC - uses: ./.github/workflows/cpp_windows.yml - with: - arch: arm64 - os: windows-11-arm - simd-level: NONE + # msvc-arm64: + # needs: check-labels + # if: >- + # needs.check-labels.outputs.force == 'true' || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') + # name: ARM64 Windows 11 MSVC + # uses: ./.github/workflows/cpp_windows.yml + # with: + # arch: arm64 + # os: windows-11-arm + # simd-level: NONE - jni-linux: - needs: check-labels - name: JNI ${{ matrix.platform.runs-on }} ${{ matrix.platform.arch }} - runs-on: ${{ matrix.platform.runs-on }} - if: >- - needs.check-labels.outputs.force == 'true' || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') - timeout-minutes: 240 - permissions: - # This is for using GitHub Packages for vcpkg cache - packages: write - strategy: - fail-fast: false - matrix: - platform: - - arch: "amd64" - runs-on: ubuntu-latest - - arch: "arm64v8" - runs-on: ubuntu-24.04-arm - env: - ARCH: ${{ matrix.platform.arch }} - REPO: ghcr.io/${{ github.repository }}-dev - steps: - - name: Checkout Arrow - uses: actions/checkout@v6 - with: - fetch-depth: 0 - submodules: recursive - - name: Free up disk space - run: | - ci/scripts/util_free_space.sh - - name: Cache Docker Volumes - uses: actions/cache@v5 - with: - path: .docker - key: jni-${{ matrix.platform.runs-on }}-${{ hashFiles('cpp/**') }} - restore-keys: jni-${{ matrix.platform.runs-on }}- - - name: Setup Python - uses: actions/setup-python@v6 - with: - python-version: 3 - - name: Setup Archery - run: python3 -m pip install -e dev/archery[docker] - - name: Execute Docker Build - env: - ARCHERY_DOCKER_USER: ${{ github.actor }} - ARCHERY_DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite" - run: | - source ci/scripts/util_enable_core_dumps.sh - archery docker run cpp-jni - - name: Docker Push - if: >- - success() && - github.event_name == 'push' && - github.ref_name == 'main' - env: - ARCHERY_DOCKER_USER: ${{ github.actor }} - ARCHERY_DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} - continue-on-error: true - run: archery docker push cpp-jni + # jni-linux: + # needs: check-labels + # name: JNI ${{ matrix.platform.runs-on }} ${{ matrix.platform.arch }} + # runs-on: ${{ matrix.platform.runs-on }} + # if: >- + # needs.check-labels.outputs.force == 'true' || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') + # timeout-minutes: 240 + # permissions: + # # This is for using GitHub Packages for vcpkg cache + # packages: write + # strategy: + # fail-fast: false + # matrix: + # platform: + # - arch: "amd64" + # runs-on: ubuntu-latest + # - arch: "arm64v8" + # runs-on: ubuntu-24.04-arm + # env: + # ARCH: ${{ matrix.platform.arch }} + # REPO: ghcr.io/${{ github.repository }}-dev + # steps: + # - name: Checkout Arrow + # uses: actions/checkout@v6 + # with: + # fetch-depth: 0 + # submodules: recursive + # - name: Free up disk space + # run: | + # ci/scripts/util_free_space.sh + # - name: Cache Docker Volumes + # uses: actions/cache@v5 + # with: + # path: .docker + # key: jni-${{ matrix.platform.runs-on }}-${{ hashFiles('cpp/**') }} + # restore-keys: jni-${{ matrix.platform.runs-on }}- + # - name: Setup Python + # uses: actions/setup-python@v6 + # with: + # python-version: 3 + # - name: Setup Archery + # run: python3 -m pip install -e dev/archery[docker] + # - name: Execute Docker Build + # env: + # ARCHERY_DOCKER_USER: ${{ github.actor }} + # ARCHERY_DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # VCPKG_BINARY_SOURCES: "clear;nuget,GitHub,readwrite" + # run: | + # source ci/scripts/util_enable_core_dumps.sh + # archery docker run cpp-jni + # - name: Docker Push + # if: >- + # success() && + # github.event_name == 'push' && + # github.ref_name == 'main' + # env: + # ARCHERY_DOCKER_USER: ${{ github.actor }} + # ARCHERY_DOCKER_PASSWORD: ${{ secrets.GITHUB_TOKEN }} + # continue-on-error: true + # run: archery docker push cpp-jni - jni-macos: - needs: check-labels - name: JNI macOS - runs-on: macos-14 - if: >- - needs.check-labels.outputs.force == 'true' || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || - contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') - timeout-minutes: 45 - env: - MACOSX_DEPLOYMENT_TARGET: "14.0" - steps: - - name: Checkout Arrow - uses: actions/checkout@v6 - with: - fetch-depth: 0 - submodules: recursive - - name: Install dependencies - run: | - brew bundle --file=cpp/Brewfile - # We want to link aws-sdk-cpp statically but Homebrew's - # aws-sdk-cpp provides only shared library. If we have - # Homebrew's aws-sdk-cpp, our build mix Homebrew's - # aws-sdk-cpp and bundled aws-sdk-cpp. We uninstall Homebrew's - # aws-sdk-cpp to ensure using only bundled aws-sdk-cpp. - brew uninstall aws-sdk-cpp - # We want to use bundled RE2 for static linking. If - # Homebrew's RE2 is installed, its header file may be used. - # We uninstall Homebrew's RE2 to ensure using bundled RE2. - brew uninstall grpc || : # gRPC depends on RE2 - brew uninstall grpc@1.54 || : # gRPC 1.54 may be installed too - brew uninstall re2 - # We want to use bundled Protobuf for static linking. If - # Homebrew's Protobuf is installed, its library file may be - # used on test We uninstall Homebrew's Protobuf to ensure using - # bundled Protobuf. - brew uninstall protobuf - - name: Prepare ccache - run: | - echo "CCACHE_DIR=${PWD}/ccache" >> ${GITHUB_ENV} - - name: Cache ccache - uses: actions/cache@v5 - with: - path: ccache - key: jni-macos-${{ hashFiles('cpp/**') }} - restore-keys: jni-macos- - - name: CMake - run: | - cmake \ - -S cpp \ - -B cpp.build \ - --preset=ninja-release-jni-macos \ - -DARROW_BUILD_TESTS=ON \ - -DCMAKE_INSTALL_PREFIX=$PWD/cpp.install - - name: Build - run: | - cmake --build cpp.build - - name: Install - run: | - cmake --install cpp.build - - name: Test - env: - ARROW_TEST_DATA: ${{ github.workspace }}/testing/data - PARQUET_TEST_DATA: ${{ github.workspace }}/cpp/submodules/parquet-testing/data - run: | - # MinIO is required - exclude_tests="arrow-s3fs-test" - # unstable - exclude_tests="${exclude_tests}|arrow-acero-asof-join-node-test" - exclude_tests="${exclude_tests}|arrow-acero-hash-join-node-test" - ctest \ - --exclude-regex "${exclude_tests}" \ - --label-regex unittest \ - --output-on-failure \ - --parallel "$(sysctl -n hw.ncpu)" \ - --test-dir "cpp.build" \ - --timeout 300 - - name: Build example - run: | - cmake \ - -S cpp/examples/minimal_build/ \ - -B cpp/examples/minimal_build.build \ - -GNinja \ - -DCMAKE_INSTALL_PREFIX=$PWD/cpp.install - cmake --build cpp/examples/minimal_build.build - cd cpp/examples/minimal_build - ../minimal_build.build/arrow-example + # jni-macos: + # needs: check-labels + # name: JNI macOS + # runs-on: macos-14 + # if: >- + # needs.check-labels.outputs.force == 'true' || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra') || + # contains(fromJSON(needs.check-labels.outputs.ci-extra-labels || '[]'), 'CI: Extra: C++') + # timeout-minutes: 45 + # env: + # MACOSX_DEPLOYMENT_TARGET: "14.0" + # steps: + # - name: Checkout Arrow + # uses: actions/checkout@v6 + # with: + # fetch-depth: 0 + # submodules: recursive + # - name: Install dependencies + # run: | + # brew bundle --file=cpp/Brewfile + # # We want to link aws-sdk-cpp statically but Homebrew's + # # aws-sdk-cpp provides only shared library. If we have + # # Homebrew's aws-sdk-cpp, our build mix Homebrew's + # # aws-sdk-cpp and bundled aws-sdk-cpp. We uninstall Homebrew's + # # aws-sdk-cpp to ensure using only bundled aws-sdk-cpp. + # brew uninstall aws-sdk-cpp + # # We want to use bundled RE2 for static linking. If + # # Homebrew's RE2 is installed, its header file may be used. + # # We uninstall Homebrew's RE2 to ensure using bundled RE2. + # brew uninstall grpc || : # gRPC depends on RE2 + # brew uninstall grpc@1.54 || : # gRPC 1.54 may be installed too + # brew uninstall re2 + # # We want to use bundled Protobuf for static linking. If + # # Homebrew's Protobuf is installed, its library file may be + # # used on test We uninstall Homebrew's Protobuf to ensure using + # # bundled Protobuf. + # brew uninstall protobuf + # - name: Prepare ccache + # run: | + # echo "CCACHE_DIR=${PWD}/ccache" >> ${GITHUB_ENV} + # - name: Cache ccache + # uses: actions/cache@v5 + # with: + # path: ccache + # key: jni-macos-${{ hashFiles('cpp/**') }} + # restore-keys: jni-macos- + # - name: CMake + # run: | + # cmake \ + # -S cpp \ + # -B cpp.build \ + # --preset=ninja-release-jni-macos \ + # -DARROW_BUILD_TESTS=ON \ + # -DCMAKE_INSTALL_PREFIX=$PWD/cpp.install + # - name: Build + # run: | + # cmake --build cpp.build + # - name: Install + # run: | + # cmake --install cpp.build + # - name: Test + # env: + # ARROW_TEST_DATA: ${{ github.workspace }}/testing/data + # PARQUET_TEST_DATA: ${{ github.workspace }}/cpp/submodules/parquet-testing/data + # run: | + # # MinIO is required + # exclude_tests="arrow-s3fs-test" + # # unstable + # exclude_tests="${exclude_tests}|arrow-acero-asof-join-node-test" + # exclude_tests="${exclude_tests}|arrow-acero-hash-join-node-test" + # ctest \ + # --exclude-regex "${exclude_tests}" \ + # --label-regex unittest \ + # --output-on-failure \ + # --parallel "$(sysctl -n hw.ncpu)" \ + # --test-dir "cpp.build" \ + # --timeout 300 + # - name: Build example + # run: | + # cmake \ + # -S cpp/examples/minimal_build/ \ + # -B cpp/examples/minimal_build.build \ + # -GNinja \ + # -DCMAKE_INSTALL_PREFIX=$PWD/cpp.install + # cmake --build cpp/examples/minimal_build.build + # cd cpp/examples/minimal_build + # ../minimal_build.build/arrow-example odbc: needs: check-labels @@ -507,10 +507,10 @@ jobs: report-extra-cpp: if: github.event_name == 'schedule' && always() needs: - - docker - - jni-linux - - jni-macos - - msvc-arm64 + # - docker + # - jni-linux + # - jni-macos + # - msvc-arm64 - odbc uses: ./.github/workflows/report_ci.yml secrets: inherit From c90edeaf9e3b73c53f957a66a91e503d5e611210 Mon Sep 17 00:00:00 2001 From: "Alina (Xi) Li" Date: Mon, 19 Jan 2026 16:28:03 -0800 Subject: [PATCH 6/6] Specify bash shell --- .github/workflows/cpp_extra.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cpp_extra.yml b/.github/workflows/cpp_extra.yml index 85f7a3344df..2d9c7a342ee 100644 --- a/.github/workflows/cpp_extra.yml +++ b/.github/workflows/cpp_extra.yml @@ -462,6 +462,7 @@ jobs: # -AL- reusing code from package Linux - name: Wait for creating GitHub Release + shell: bash if: github.ref_type == 'tag' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -473,6 +474,7 @@ jobs: ${GITHUB_REF_NAME} \ release_candidate.yml - name: Upload the artifacts to GitHub Release + shell: bash if: github.ref_type == 'tag' env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}