-
Notifications
You must be signed in to change notification settings - Fork 828
171 lines (165 loc) · 5.83 KB
/
integration.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# 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: integration
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
# trigger for all PRs that touch certain files and changes to master
on:
push:
branches:
- master
pull_request:
paths:
- .github/**
- arrow-array/**
- arrow-buffer/**
- arrow-cast/**
- arrow-csv/**
- arrow-data/**
- arrow-integration-test/**
- arrow-integration-testing/**
- arrow-ipc/**
- arrow-json/**
- arrow-ord/**
- arrow-pyarrow-integration-testing/**
- arrow-schema/**
- arrow-select/**
- arrow-sort/**
- arrow-string/**
- arrow/**
jobs:
integration:
name: Archery test With other arrows
runs-on: ubuntu-latest
container:
image: apache/arrow-dev:amd64-conda-integration
env:
ARROW_USE_CCACHE: OFF
ARROW_CPP_EXE_PATH: /build/cpp/debug
ARROW_GO_INTEGRATION: 1
BUILD_DOCS_CPP: OFF
# These are necessary because the github runner overrides $HOME
# https://github.com/actions/runner/issues/863
RUSTUP_HOME: /root/.rustup
CARGO_HOME: /root/.cargo
defaults:
run:
shell: bash
steps:
# This is necessary so that actions/checkout can find git
- name: Export conda path
run: echo "/opt/conda/envs/arrow/bin" >> $GITHUB_PATH
# This is necessary so that Rust can find cargo
- name: Export cargo path
run: echo "/root/.cargo/bin" >> $GITHUB_PATH
- name: Check rustup
run: which rustup
- name: Check cmake
run: which cmake
- name: Checkout Arrow
uses: actions/checkout@v4
with:
repository: apache/arrow
submodules: true
fetch-depth: 0
- name: Checkout Arrow Rust
uses: actions/checkout@v4
with:
path: rust
fetch-depth: 0
- name: Make build directory
run: mkdir /build
- name: Build Rust
run: conda run --no-capture-output ci/scripts/rust_build.sh $PWD /build
- name: Build C++
run: conda run --no-capture-output ci/scripts/cpp_build.sh $PWD /build
- name: Build C#
run: conda run --no-capture-output ci/scripts/csharp_build.sh $PWD /build
- name: Build Go
run: conda run --no-capture-output ci/scripts/go_build.sh $PWD
- name: Build Java
run: conda run --no-capture-output ci/scripts/java_build.sh $PWD /build
- name: Build JS
run: conda run --no-capture-output ci/scripts/js_build.sh $PWD /build
- name: Install archery
run: conda run --no-capture-output pip install -e dev/archery
- name: Run integration tests
run: |
conda run --no-capture-output archery integration \
--run-flight \
--run-c-data \
--run-ipc \
--with-cpp=1 \
--with-csharp=1 \
--with-java=1 \
--with-js=1 \
--with-go=1 \
--with-rust=1 \
--gold-dirs=testing/data/arrow-ipc-stream/integration/0.14.1 \
--gold-dirs=testing/data/arrow-ipc-stream/integration/0.17.1 \
--gold-dirs=testing/data/arrow-ipc-stream/integration/1.0.0-bigendian \
--gold-dirs=testing/data/arrow-ipc-stream/integration/1.0.0-littleendian \
--gold-dirs=testing/data/arrow-ipc-stream/integration/2.0.0-compression \
--gold-dirs=testing/data/arrow-ipc-stream/integration/4.0.0-shareddict
# test FFI against the C-Data interface exposed by pyarrow
pyarrow-integration-test:
name: Pyarrow C Data Interface
runs-on: ubuntu-latest
strategy:
matrix:
rust: [ stable ]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup Rust toolchain
run: |
rustup toolchain install ${{ matrix.rust }}
rustup default ${{ matrix.rust }}
rustup component add rustfmt clippy
- name: Cache Cargo
uses: actions/cache@v3
with:
path: /home/runner/.cargo
key: cargo-maturin-cache-
- name: Cache Rust dependencies
uses: actions/cache@v3
with:
path: /home/runner/target
# this key is not equal because maturin uses different compilation flags.
key: ${{ runner.os }}-${{ matrix.arch }}-target-maturin-cache-${{ matrix.rust }}-
- uses: actions/setup-python@v4
with:
python-version: '3.7'
- name: Upgrade pip and setuptools
run: pip install --upgrade pip setuptools wheel virtualenv
- name: Create virtualenv and install dependencies
run: |
virtualenv venv
source venv/bin/activate
pip install maturin toml pytest pytz pyarrow>=5.0
- name: Run Rust tests
run: |
source venv/bin/activate
cargo test -p arrow --test pyarrow --features pyarrow
- name: Run tests
run: |
source venv/bin/activate
cd arrow-pyarrow-integration-testing
maturin develop
pytest -v .