Skip to content

feat(arrow/cdata): Add Implementation of Async C Data interface #222

feat(arrow/cdata): Add Implementation of Async C Data interface

feat(arrow/cdata): Add Implementation of Async C Data interface #222

Workflow file for this run

# 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: Test
on:
push:
branches:
- '**'
- '!dependabot/**'
tags:
- '*'
pull_request:
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
permissions:
contents: read
jobs:
docker-targets:
name: Docker targets
runs-on: ubuntu-latest
outputs:
targets: ${{ steps.detect-targets.outputs.targets }}
steps:
- name: Detect targets
id: detect-targets
run: |
echo "targets<<JSON" >> "$GITHUB_OUTPUT"
echo "[" >> "$GITHUB_OUTPUT"
cat <<JSON >> "$GITHUB_OUTPUT"
{
"arch-label": "AMD64",
"arch": "amd64",
"go": "1.22",
"runs-on": "ubuntu-latest"
},
{
"arch-label": "AMD64",
"arch": "amd64",
"go": "1.23",
"runs-on": "ubuntu-latest"
}
JSON
if [ "$GITHUB_REPOSITORY_OWNER" = "apache" ]; then
echo "," >> "$GITHUB_OUTPUT"
cat <<JSON >> "$GITHUB_OUTPUT"
{
"arch-label": "ARM64",
"arch": "arm64v8",
"go": "1.22",
"runs-on": ["self-hosted", "arm", "linux"]
},
{
"arch-label": "ARM64",
"arch": "arm64v8",
"go": "1.23",
"runs-on": ["self-hosted", "arm", "linux"]
}
JSON
fi
echo "]" >> "$GITHUB_OUTPUT"
echo "JSON" >> "$GITHUB_OUTPUT"
docker:
name: ${{ matrix.arch-label }} Debian 12 Go ${{ matrix.go }}
needs: docker-targets
runs-on: ${{ matrix.runs-on }}
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(needs.docker-targets.outputs.targets) }}
env:
ARCH: ${{ matrix.arch }}
GO: ${{ matrix.go }}
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Login to GitHub Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull
run: |
docker compose pull debian || :
- name: Test
run: |
docker compose run debian
- name: Push
if: >-
success() && github.event_name == 'push' && github.repository == 'apache/arrow-go' && github.ref_name == 'main'
continue-on-error: true
run: |
docker compose push debian
docker-cgo:
name: AMD64 Debian 12 Go ${{ matrix.go }} - CGO
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
go:
- '1.22'
- '1.23'
env:
GO: ${{ matrix.go }}
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Login to GitHub Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull
run: |
docker compose pull debian || :
docker compose pull debian-cgo || :
- name: Build
run: |
docker compose build debian
docker compose build debian-cgo
- name: Test
run: |
docker compose run debian-cgo
- name: Push
if: >-
success() && github.event_name == 'push' && github.repository == 'apache/arrow-go' && github.ref_name == 'main'
continue-on-error: true
run: |
docker compose push debian-cgo
docker-cgo-python:
name: AMD64 Debian 12 Go ${{ matrix.go }} - CGO Python
runs-on: ubuntu-latest
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
go:
- '1.22'
- '1.23'
env:
GO: ${{ matrix.go }}
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Login to GitHub Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Pull
run: |
docker compose pull debian || :
docker compose pull debian-cgo-python || :
- name: Build
run: |
docker compose build debian
docker compose build debian-cgo-python
- name: Test
run: |
docker compose run debian-cgo-python
- name: Push
if: >-
success() && github.event_name == 'push' && github.repository == 'apache/arrow-go' && github.ref_name == 'main'
continue-on-error: true
run: |
docker compose push debian-cgo-python
macos:
name: AMD64 macOS 14 Go ${{ matrix.go }}
runs-on: macos-14
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
go:
- '1.22'
- '1.23'
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ${{ matrix.go }}
cache: true
cache-dependency-path: go.sum
- name: Build
run: |
ci/scripts/build.sh $(pwd)
- name: Test
run: |
ci/scripts/test.sh $(pwd)
macos-cgo:
name: AMD64 macOS 14 Go ${{ matrix.go }} - CGO
runs-on: macos-14
timeout-minutes: 25
strategy:
fail-fast: false
matrix:
go:
- '1.22'
- '1.23'
env:
ARROW_GO_TESTCGO: "1"
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ${{ matrix.go }}
cache: true
cache-dependency-path: go.sum
- name: Brew Install Arrow and pkg-config
run: brew install apache-arrow pkg-config
- name: Setup PKG_CONFIG_PATH
run: |
echo "PKG_CONFIG_PATH=$(brew --prefix openssl@3)/lib/pkgconfig:$PKG_CONFIG_PATH" >> $GITHUB_ENV
- name: Build
run: |
ci/scripts/build.sh $(pwd)
- name: Test
run: |
ci/scripts/test.sh $(pwd)
windows:
name: AMD64 Windows 2019 Go ${{ matrix.go }}
runs-on: windows-2019
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
go:
- '1.22'
- '1.23'
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: ${{ matrix.go }}
cache: true
cache-dependency-path: go.sum
- name: Build
shell: bash
run: ci/scripts/build.sh $(pwd)
- name: Test
shell: bash
run: ci/scripts/test.sh $(pwd)
windows-mingw:
name: AMD64 Windows MinGW ${{ matrix.mingw-n-bits }} CGO
runs-on: windows-2019
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
mingw-n-bits:
#- 32 runtime handling for CGO needs 64-bit currently
- 64
env:
ARROW_GO_TESTCGO: "1"
MINGW_LINT: "1"
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
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- uses: msys2/setup-msys2@v2
with:
msystem: MINGW${{ matrix.mingw-n-bits }}
update: true
- name: Setup MSYS2
shell: msys2 {0}
run: |
ci/scripts/msys2_setup.sh
- name: Get required Go version
run: "(. .env && echo \"GO_VERSION=${GO}\") >> $GITHUB_ENV"
- name: Update CGO Env vars
shell: msys2 {0}
run: |
echo "CGO_CPPFLAGS=-I$(cygpath --windows ${MINGW_PREFIX}/include)" >> $GITHUB_ENV
echo "CGO_LDFLAGS=-g -O2 -L$(cygpath --windows ${MINGW_PREFIX}/lib) -L$(cygpath --windows ${MINGW_PREFIX}/bin)" >> $GITHUB_ENV
echo "MINGW_PREFIX=$(cygpath --windows ${MINGW_PREFIX})" >> $GITHUB_ENV
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: "${{ env.GO_VERSION }}"
cache: true
cache-dependency-path: go.sum
- name: Build
shell: bash
run: ci/scripts/build.sh $(pwd)
- name: Test
shell: bash
run: ci/scripts/test.sh $(pwd)
build-test-386:
name: Cross-build and test for 386
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Get required Go version
run: |
(. .env && echo "GO_VERSION=${GO}") >> $GITHUB_ENV
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2
with:
go-version: "${{ env.GO_VERSION }}"
cache: true
cache-dependency-path: go.sum
- name: Build
run: GOARCH=386 go build ./...
- name: Test
# WIP refactor, only tests in the specified dirs have been fixed
run: GOARCH=386 go test ./parquet/file/...
tinygo:
name: TinyGo
runs-on: ubuntu-latest
env:
TINYGO_VERSION: 0.33.0
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
submodules: recursive
- name: Build and Run Example
run: |
docker run \
--rm \
-v $(pwd):/src \
-v $(pwd)/ci/scripts:/ci-scripts \
"tinygo/tinygo:$TINYGO_VERSION" \
/ci-scripts/tinygo_example.sh
integration:
name: AMD64 Conda Integration
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout Arrow
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
fetch-depth: 0
repository: apache/arrow
submodules: recursive
- name: Checkout Arrow Rust
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
repository: apache/arrow-rs
path: rust
- name: Checkout Arrow nanoarrow
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
repository: apache/arrow-nanoarrow
path: nanoarrow
- name: Checkout Arrow Go
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
path: go
- name: Free up disk space
run: |
ci/scripts/util_free_space.sh
- name: Cache Docker Volumes
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2
with:
path: .docker
key: integration-conda-${{ hashFiles('cpp/**') }}
restore-keys: conda-
- name: Setup Python
uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0
with:
python-version: 3.12
- name: Setup Archery
run: pip install -e dev/archery[docker]
- name: Execute Docker Build
run: |
source ci/scripts/util_enable_core_dumps.sh
archery docker run \
-e ARCHERY_DEFAULT_BRANCH=${{ github.event.repository.default_branch }} \
-e ARCHERY_INTEGRATION_TARGET_IMPLEMENTATIONS=go \
-e ARCHERY_INTEGRATION_WITH_GO=1 \
-e ARCHERY_INTEGRATION_WITH_NANOARROW=1 \
-e ARCHERY_INTEGRATION_WITH_RUST=1 \
conda-integration