Skip to content

Commit 0617024

Browse files
authored
GH-1244: Move integration tests to separate workflow (#1245)
## What's Changed Move the `integration` job from `test.yml` into its own `integration.yml` workflow. The new workflow uses top-level `paths` filters, so integration tests run only when changes affect relevant code or build inputs. This should also help to reduce the amount of runner time. Topic initially triggered in the [mailing list](https://lists.apache.org/thread/drf0o5kzg1zfmok7gc09k8qz8hh9ymvh) Closes #1244
1 parent 21b6a05 commit 0617024

2 files changed

Lines changed: 127 additions & 69 deletions

File tree

.github/workflows/integration.yml

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
name: Integration
19+
20+
on:
21+
push:
22+
branches:
23+
- '**'
24+
- '!dependabot/**'
25+
tags:
26+
- '**'
27+
paths:
28+
- '.github/workflows/integration.yml'
29+
- '**/pom.xml'
30+
- 'c/**'
31+
- 'ci/scripts/**'
32+
- 'compose.yaml'
33+
- 'flight/**'
34+
- 'format/**'
35+
- 'testing/data/**'
36+
- 'vector/**'
37+
pull_request:
38+
paths:
39+
- '.github/workflows/integration.yml'
40+
- '**/pom.xml'
41+
- 'c/**'
42+
- 'ci/scripts/**'
43+
- 'compose.yaml'
44+
- 'flight/**'
45+
- 'format/**'
46+
- 'testing/data/**'
47+
- 'vector/**'
48+
49+
concurrency:
50+
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
51+
cancel-in-progress: true
52+
53+
permissions:
54+
contents: read
55+
56+
env:
57+
DOCKER_VOLUME_PREFIX: ".docker/"
58+
59+
jobs:
60+
integration:
61+
name: AMD64 integration
62+
runs-on: ubuntu-latest
63+
timeout-minutes: 60
64+
steps:
65+
- name: Checkout Arrow
66+
uses: actions/checkout@v7
67+
with:
68+
fetch-depth: 0
69+
repository: apache/arrow
70+
submodules: recursive
71+
- name: Checkout Arrow Rust
72+
uses: actions/checkout@v7
73+
with:
74+
repository: apache/arrow-rs
75+
path: rust
76+
- name: Checkout Arrow nanoarrow
77+
uses: actions/checkout@v7
78+
with:
79+
repository: apache/arrow-nanoarrow
80+
path: nanoarrow
81+
- name: Checkout Arrow .NET
82+
uses: actions/checkout@v7
83+
with:
84+
repository: apache/arrow-dotnet
85+
path: dotnet
86+
- name: Checkout Arrow Go
87+
uses: actions/checkout@v7
88+
with:
89+
repository: apache/arrow-go
90+
path: go
91+
- name: Checkout Arrow Java
92+
uses: actions/checkout@v7
93+
with:
94+
path: java
95+
- name: Checkout Arrow JavaScript
96+
uses: actions/checkout@v7
97+
with:
98+
repository: apache/arrow-js
99+
path: js
100+
- name: Free up disk space
101+
run: |
102+
ci/scripts/util_free_space.sh
103+
- name: Cache Docker Volumes
104+
uses: actions/cache@v6
105+
with:
106+
path: .docker
107+
key: integration-conda-${{ hashFiles('cpp/**') }}
108+
restore-keys: integration-conda-
109+
- name: Setup Python
110+
uses: actions/setup-python@v6
111+
with:
112+
python-version: 3.12
113+
- name: Setup Archery
114+
run: pip install -e dev/archery[docker]
115+
- name: Execute Docker Build
116+
run: |
117+
source ci/scripts/util_enable_core_dumps.sh
118+
archery docker run \
119+
-e ARCHERY_DEFAULT_BRANCH=main \
120+
-e ARCHERY_INTEGRATION_TARGET_IMPLEMENTATIONS=java \
121+
-e ARCHERY_INTEGRATION_WITH_DOTNET=1 \
122+
-e ARCHERY_INTEGRATION_WITH_GO=1 \
123+
-e ARCHERY_INTEGRATION_WITH_JAVA=1 \
124+
-e ARCHERY_INTEGRATION_WITH_JS=1 \
125+
-e ARCHERY_INTEGRATION_WITH_NANOARROW=1 \
126+
-e ARCHERY_INTEGRATION_WITH_RUST=1 \
127+
conda-integration

.github/workflows/test.yml

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -147,72 +147,3 @@ jobs:
147147
env:
148148
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
149149
run: ci/scripts/test.sh . build jni
150-
151-
integration:
152-
name: AMD64 integration
153-
runs-on: ubuntu-latest
154-
timeout-minutes: 60
155-
steps:
156-
- name: Checkout Arrow
157-
uses: actions/checkout@v7
158-
with:
159-
fetch-depth: 0
160-
repository: apache/arrow
161-
submodules: recursive
162-
- name: Checkout Arrow Rust
163-
uses: actions/checkout@v7
164-
with:
165-
repository: apache/arrow-rs
166-
path: rust
167-
- name: Checkout Arrow nanoarrow
168-
uses: actions/checkout@v7
169-
with:
170-
repository: apache/arrow-nanoarrow
171-
path: nanoarrow
172-
- name: Checkout Arrow .NET
173-
uses: actions/checkout@v7
174-
with:
175-
repository: apache/arrow-dotnet
176-
path: dotnet
177-
- name: Checkout Arrow Go
178-
uses: actions/checkout@v7
179-
with:
180-
repository: apache/arrow-go
181-
path: go
182-
- name: Checkout Arrow Java
183-
uses: actions/checkout@v7
184-
with:
185-
path: java
186-
- name: Checkout Arrow JavaScript
187-
uses: actions/checkout@v7
188-
with:
189-
repository: apache/arrow-js
190-
path: js
191-
- name: Free up disk space
192-
run: |
193-
ci/scripts/util_free_space.sh
194-
- name: Cache Docker Volumes
195-
uses: actions/cache@v6
196-
with:
197-
path: .docker
198-
key: integration-conda-${{ hashFiles('cpp/**') }}
199-
restore-keys: integration-conda-
200-
- name: Setup Python
201-
uses: actions/setup-python@v7
202-
with:
203-
python-version: 3.12
204-
- name: Setup Archery
205-
run: pip install -e dev/archery[docker]
206-
- name: Execute Docker Build
207-
run: |
208-
source ci/scripts/util_enable_core_dumps.sh
209-
archery docker run \
210-
-e ARCHERY_DEFAULT_BRANCH=main \
211-
-e ARCHERY_INTEGRATION_TARGET_IMPLEMENTATIONS=java \
212-
-e ARCHERY_INTEGRATION_WITH_DOTNET=1 \
213-
-e ARCHERY_INTEGRATION_WITH_GO=1 \
214-
-e ARCHERY_INTEGRATION_WITH_JAVA=1 \
215-
-e ARCHERY_INTEGRATION_WITH_JS=1 \
216-
-e ARCHERY_INTEGRATION_WITH_NANOARROW=1 \
217-
-e ARCHERY_INTEGRATION_WITH_RUST=1 \
218-
conda-integration

0 commit comments

Comments
 (0)