]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/arrow/.github/workflows/ruby.yml
import quincy 17.2.0
[ceph.git] / ceph / src / arrow / .github / workflows / ruby.yml
diff --git a/ceph/src/arrow/.github/workflows/ruby.yml b/ceph/src/arrow/.github/workflows/ruby.yml
new file mode 100644 (file)
index 0000000..067b40a
--- /dev/null
@@ -0,0 +1,299 @@
+# 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: C GLib & Ruby
+
+on:
+  push:
+    paths:
+      - '.github/workflows/ruby.yml'
+      - 'ci/docker/**'
+      - 'ci/scripts/c_glib_*'
+      - 'ci/scripts/cpp_*'
+      - 'ci/scripts/msys2_*'
+      - 'ci/scripts/ruby_*'
+      - 'ci/scripts/util_*'
+      - 'c_glib/**'
+      - 'cpp/**'
+      - 'ruby/**'
+  pull_request:
+    paths:
+      - '.github/workflows/ruby.yml'
+      - 'ci/docker/**'
+      - 'ci/scripts/c_glib_*'
+      - 'ci/scripts/cpp_*'
+      - 'ci/scripts/msys2_*'
+      - 'ci/scripts/ruby_*'
+      - 'ci/scripts/util_*'
+      - 'c_glib/**'
+      - 'cpp/**'
+      - 'ruby/**'
+
+concurrency:
+  group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}
+  cancel-in-progress: true
+
+env:
+  DOCKER_VOLUME_PREFIX: ".docker/"
+  ARCHERY_DOCKER_USER: ${{ secrets.DOCKERHUB_USER }}
+  ARCHERY_DOCKER_PASSWORD: ${{ secrets.DOCKERHUB_TOKEN }}
+
+jobs:
+
+  ubuntu:
+    name: AMD64 Ubuntu ${{ matrix.ubuntu }} GLib & Ruby
+    runs-on: ubuntu-latest
+    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
+    timeout-minutes: 40
+    strategy:
+      fail-fast: false
+      matrix:
+        ubuntu:
+          - 20.04
+    env:
+      UBUNTU: ${{ matrix.ubuntu }}
+    steps:
+      - name: Checkout Arrow
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - name: Fetch Submodules and Tags
+        shell: bash
+        run: ci/scripts/util_checkout.sh
+      - name: Free Up Disk Space
+        shell: bash
+        run: ci/scripts/util_cleanup.sh
+      - name: Cache Docker Volumes
+        uses: actions/cache@v2
+        with:
+          path: .docker
+          key: ubuntu-${{ matrix.ubuntu }}-ruby-${{ hashFiles('cpp/**') }}
+          restore-keys: ubuntu-${{ matrix.ubuntu }}-ruby-
+      - name: Setup Python
+        uses: actions/setup-python@v1
+        with:
+          python-version: 3.8
+      - name: Setup Archery
+        run: pip install -e dev/archery[docker]
+      - name: Execute Docker Build
+        run: |
+          sudo sysctl -w kernel.core_pattern="core.%e.%p"
+          ulimit -c unlimited
+          archery docker run \
+            -e ARROW_FLIGHT=ON \
+            -e Protobuf_SOURCE=BUNDLED \
+            -e gRPC_SOURCE=BUNDLED \
+            ubuntu-ruby
+      - name: Docker Push
+        if: success() && github.event_name == 'push' && github.repository == 'apache/arrow'
+        continue-on-error: true
+        shell: bash
+        run: archery docker push ubuntu-ruby
+
+  macos:
+    name: AMD64 MacOS 10.15 GLib & Ruby
+    runs-on: macos-latest
+    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
+    timeout-minutes: 40
+    strategy:
+      fail-fast: false
+    env:
+      ARROW_BUILD_TESTS: OFF
+      ARROW_FLIGHT: ON
+      ARROW_GANDIVA: ON
+      ARROW_GLIB_DEVELOPMENT_MODE: true
+      ARROW_GLIB_GTK_DOC: true
+      ARROW_HOME: /usr/local
+      ARROW_JEMALLOC: OFF
+      ARROW_ORC: OFF
+      ARROW_PARQUET: ON
+      ARROW_WITH_BROTLI: ON
+      ARROW_WITH_LZ4: ON
+      ARROW_WITH_SNAPPY: ON
+      ARROW_WITH_ZLIB: ON
+      ARROW_WITH_ZSTD: ON
+      XML_CATALOG_FILES: /usr/local/etc/xml/catalog
+    steps:
+      - name: Checkout Arrow
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - name: Fetch Submodules and Tags
+        shell: bash
+        run: ci/scripts/util_checkout.sh
+      - name: Install Homebrew Dependencies
+        shell: bash
+        run: |
+          rm -f /usr/local/bin/2to3
+          brew update --preinstall
+          brew bundle --file=cpp/Brewfile
+          brew bundle --file=c_glib/Brewfile
+      - name: Install Ruby Dependencies
+        run: |
+          export MAKEFLAGS="-j$(sysctl -n hw.ncpu)"
+          bundle install --gemfile c_glib/Gemfile
+          bundle install --gemfile ruby/Gemfile
+          for ruby_package_gemfile in ruby/*/Gemfile; do \
+            bundle install --gemfile ${ruby_package_gemfile}
+          done
+      - name: Setup ccache
+        run: |
+          ci/scripts/ccache_setup.sh
+      - name: ccache info
+        id: ccache-info
+        run: |
+          echo "::set-output name=cache-dir::$(ccache --get-config cache_dir)"
+      - name: Cache ccache
+        uses: actions/cache@v2
+        with:
+          path: ${{ steps.ccache-info.outputs.cache-dir }}
+          key: ruby-ccache-macos-${{ hashFiles('cpp/**') }}
+          restore-keys: ruby-ccache-macos-
+      - name: Build C++
+        run: |
+          ci/scripts/cpp_build.sh $(pwd) $(pwd)/build
+      - name: Build GLib
+        run: |
+          ci/scripts/c_glib_build.sh $(pwd) $(pwd)/build
+      - name: Test GLib
+        shell: bash
+        run: ci/scripts/c_glib_test.sh $(pwd) $(pwd)/build
+      - name: Test Ruby
+        shell: bash
+        run: ci/scripts/ruby_test.sh $(pwd) $(pwd)/build
+
+  windows:
+    name: AMD64 Windows MinGW ${{ matrix.mingw-n-bits }} GLib & Ruby
+    runs-on: windows-latest
+    if: ${{ !contains(github.event.pull_request.title, 'WIP') }}
+    timeout-minutes: 40
+    strategy:
+      fail-fast: false
+      matrix:
+        mingw-n-bits:
+          - 64
+        ruby-version:
+          - "3.0"
+    env:
+      ARROW_BUILD_SHARED: ON
+      ARROW_BUILD_STATIC: OFF
+      ARROW_BUILD_TESTS: OFF
+      ARROW_BUILD_TYPE: release
+      ARROW_FLIGHT: ON
+      ARROW_GANDIVA: ON
+      ARROW_HDFS: OFF
+      ARROW_HOME: /mingw${{ matrix.mingw-n-bits }}
+      ARROW_JEMALLOC: OFF
+      ARROW_PARQUET: ON
+      ARROW_PYTHON: OFF
+      ARROW_S3: ON
+      ARROW_USE_GLOG: OFF
+      ARROW_WITH_BROTLI: ON
+      ARROW_WITH_BZ2: ON
+      ARROW_WITH_LZ4: ON
+      ARROW_WITH_SNAPPY: ON
+      ARROW_WITH_ZLIB: ON
+      ARROW_WITH_ZSTD: ON
+      # Don't use preinstalled Boost by empty BOOST_ROOT and
+      # -DBoost_NO_BOOST_CMAKE=ON
+      BOOST_ROOT: ""
+      CMAKE_ARGS: >-
+        -DARROW_PACKAGE_PREFIX=/mingw${{ matrix.mingw-n-bits }}
+        -DBoost_NO_BOOST_CMAKE=ON
+      CMAKE_UNITY_BUILD: ON
+    steps:
+      - name: Disable Crash Dialogs
+        run: |
+          reg add `
+            "HKCU\SOFTWARE\Microsoft\Windows\Windows Error Reporting" `
+            /v DontShowUI `
+            /t REG_DWORD `
+            /d 1 `
+            /f
+      - name: Checkout Arrow
+        uses: actions/checkout@v2
+        with:
+          fetch-depth: 0
+      - name: Fetch Submodules and Tags
+        shell: bash
+        run: ci/scripts/util_checkout.sh
+      - name: Setup Ruby
+        uses: ruby/setup-ruby@v1
+        with:
+          ruby-version: ${{ matrix.ruby-version }}
+      - name: Upgrade MSYS2
+        run: |
+          ridk exec bash ci\scripts\msys2_system_upgrade.sh
+          taskkill /F /FI "MODULES eq msys-2.0.dll"
+      - name: Clean MSYS2
+        run: |
+          ridk exec bash ci\scripts\msys2_system_clean.sh
+      - name: Setup MSYS2
+        run: |
+          ridk exec bash ci\scripts\msys2_setup.sh ruby
+      - name: Cache ccache
+        uses: actions/cache@v2
+        with:
+          path: ccache
+          key: ruby-ccache-mingw${{ matrix.mingw-n-bits }}-${{ hashFiles('cpp/**') }}
+          restore-keys: ruby-ccache-mingw${{ matrix.mingw-n-bits }}-
+      - name: Build C++
+        run: |
+          $Env:CMAKE_BUILD_PARALLEL_LEVEL = $Env:NUMBER_OF_PROCESSORS
+          $source_dir = "$(ridk exec cygpath --unix "$(Get-Location)")"
+          $build_dir = "$(ridk exec cygpath --unix "$(Get-Location)\build")"
+          $ErrorActionPreference = "Continue"
+          ridk exec bash ci\scripts\cpp_build.sh "${source_dir}" "${build_dir}"
+      - name: Build GLib
+        run: |
+          $Env:CMAKE_BUILD_PARALLEL_LEVEL = $Env:NUMBER_OF_PROCESSORS
+          $source_dir = "$(ridk exec cygpath --unix "$(Get-Location)")"
+          $build_dir = "$(ridk exec cygpath --unix "$(Get-Location)\build")"
+          $ErrorActionPreference = "Continue"
+          ridk exec bash ci\scripts\c_glib_build.sh "${source_dir}" "${build_dir}"
+      - name: RubyGems info
+        id: rubygems-info
+        run: |
+          Write-Output "::set-output name=gem-dir::$(ridk exec gem env gemdir)"
+      - name: Cache RubyGems
+        uses: actions/cache@v2
+        with:
+          path: ${{ steps.rubygems-info.outputs.gem-dir }}
+          key: ruby-rubygems-mingw${{ matrix.mingw-n-bits }}-${{ hashFiles('**/Gemfile', 'ruby/*/*.gemspec') }}
+          restore-keys: ruby-rubygems-mingw${{ matrix.mingw-n-bits }}-
+      - name: Install test dependencies
+        run: |
+          bundle install --gemfile c_glib\Gemfile
+          bundle install --gemfile ruby\Gemfile
+          Get-ChildItem ruby\*\Gemfile | `
+            ForEach-Object {bundle install --gemfile $_}
+      - name: Test GLib
+        run: |
+          $source_dir = "$(ridk exec cygpath --unix "$(Get-Location)")"
+          $build_dir = "$(ridk exec cygpath --unix "$(Get-Location)\build")"
+          $ErrorActionPreference = "Continue"
+          ridk exec bash ci\scripts\c_glib_test.sh "${source_dir}" "${build_dir}"
+      - name: Test Ruby
+        run: |
+          $Env:PKG_CONFIG_PATH = `
+            "$(ridk exec cygpath --absolute --windows "${Env:ARROW_HOME}/lib/pkgconfig")"
+          $Env:GI_TYPELIB_PATH = `
+            "$(ridk exec cygpath --absolute --windows "${Env:ARROW_HOME}/lib/girepository-1.0")"
+          $Env:RUBYOPTS = "-rdevkit"
+          $Env:MAKE = "ridk exec make"
+          $ErrorActionPreference = "Continue"
+          rake -f ruby\Rakefile