Skip to content

Commit afa5545

Browse files
committed
BB-745: speed up CI workflow execution
1 parent 36bed05 commit afa5545

File tree

1 file changed

+118
-64
lines changed

1 file changed

+118
-64
lines changed

.github/workflows/tests.yaml

Lines changed: 118 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,18 @@ jobs:
1717
# Need to explicitely add package write permissions for dependabot
1818
contents: read
1919
packages: write
20+
strategy:
21+
matrix:
22+
include:
23+
- name: ci-kafka
24+
context: .github/dockerfiles/kafka
25+
file: ""
26+
- name: syntheticbucketd
27+
context: .
28+
file: .github/dockerfiles/syntheticbucketd/Dockerfile
29+
- name: ci-mongodb
30+
context: .github/dockerfiles/mongodb
31+
file: ""
2032
steps:
2133
- name: Checkout
2234
uses: actions/checkout@v4
@@ -26,7 +38,7 @@ jobs:
2638
node-version: '22'
2739
cache: yarn
2840

29-
- name: Set up Docker Buildk
41+
- name: Set up Docker Buildx
3042
uses: docker/setup-buildx-action@v3
3143

3244
- name: Login to Registry
@@ -36,33 +48,15 @@ jobs:
3648
username: ${{ github.repository_owner }}
3749
password: ${{ github.token }}
3850

39-
- name: Build and push kafka
40-
uses: docker/build-push-action@v6
41-
with:
42-
push: true
43-
context: .github/dockerfiles/kafka
44-
tags: ghcr.io/${{ github.repository }}/ci-kafka:${{ github.sha }}
45-
cache-from: type=gha,scope=ci-kafka
46-
cache-to: type=gha,mode=max,scope=ci-kafka
47-
48-
- name: Build and push syntheticbucketd
49-
uses: docker/build-push-action@v6
50-
with:
51-
push: true
52-
context: .
53-
file: .github/dockerfiles/syntheticbucketd/Dockerfile
54-
tags: ghcr.io/${{ github.repository }}/syntheticbucketd:${{ github.sha }}
55-
cache-from: type=gha,scope=syntheticbucketd
56-
cache-to: type=gha,mode=max,scope=syntheticbucketd
57-
58-
- name: Build and push MongoDB
51+
- name: Build and push ${{ matrix.name }}
5952
uses: docker/build-push-action@v6
6053
with:
6154
push: true
62-
context: .github/dockerfiles/mongodb
63-
tags: ghcr.io/${{ github.repository }}/ci-mongodb:${{ github.sha }}
64-
cache-from: type=gha,scope=ci-mongodb
65-
cache-to: type=gha,mode=max,scope=ci-mongodb
55+
context: ${{ matrix.context }}
56+
file: ${{ matrix.file || format('{0}/Dockerfile', matrix.context) }}
57+
tags: ghcr.io/${{ github.repository }}/${{ matrix.name }}:${{ github.sha }}
58+
cache-from: type=gha,scope=${{ matrix.name }}
59+
cache-to: type=gha,mode=max,scope=${{ matrix.name }}
6660

6761
bucket-scanner:
6862
runs-on: ubuntu-latest
@@ -96,7 +90,7 @@ jobs:
9690
directory: bucket-scanner
9791
flags: bucket-scanner
9892

99-
tests:
93+
lint-and-unit:
10094
needs: build
10195
runs-on: ubuntu-latest
10296
services:
@@ -151,51 +145,111 @@ jobs:
151145
directory: ./coverage/test
152146
flags: unit
153147

154-
- name: Run backbeat routes test
155-
uses: ./.github/actions/ft-test
156-
with:
157-
testsuite: api:routes
158-
token: ${{ secrets.CODECOV_TOKEN }}
159-
runner: run_server_tests.bash
160-
env:
161-
MANAGEMENT_BACKEND: operator
162-
163-
- name: Run backbeat retry tests with account authentication
164-
uses: ./.github/actions/ft-test
165-
with:
166-
testsuite: api:retry
167-
token: ${{ secrets.CODECOV_TOKEN }}
168-
runner: run_server_tests.bash
169-
170-
- name: run feature replication tests
171-
uses: ./.github/actions/ft-test
172-
with:
173-
testsuite: replication
174-
token: ${{ secrets.CODECOV_TOKEN }}
175-
176-
- name: run feature lifecycle tests
177-
uses: ./.github/actions/ft-test
178-
with:
179-
testsuite: lifecycle
180-
token: ${{ secrets.CODECOV_TOKEN }}
181-
182-
- name: run feature ingestion tests
183-
uses: ./.github/actions/ft-test
148+
functional-tests:
149+
needs: build
150+
runs-on: ubuntu-latest
151+
strategy:
152+
fail-fast: false
153+
matrix:
154+
include:
155+
- testsuite: api:routes
156+
runner: run_server_tests.bash
157+
env:
158+
MANAGEMENT_BACKEND: operator
159+
- testsuite: api:retry
160+
runner: run_server_tests.bash
161+
- testsuite: replication
162+
runner: run_ft_tests.bash
163+
- testsuite: lifecycle
164+
runner: run_ft_tests.bash
165+
- testsuite: ingestion
166+
runner: run_ft_tests.bash
167+
- testsuite: lib
168+
runner: run_ft_tests.bash
169+
- testsuite: notification
170+
runner: run_ft_tests.bash
171+
services:
172+
redis:
173+
image: redis:alpine
174+
ports:
175+
- 6379:6379
176+
syntheticbucketd:
177+
image: ghcr.io/${{ github.repository }}/syntheticbucketd:${{ github.sha }}
178+
ports:
179+
- 9001:9001
180+
kafka:
181+
image: ghcr.io/${{ github.repository }}/ci-kafka:${{ github.sha }}
182+
credentials:
183+
username: ${{ github.repository_owner }}
184+
password: ${{ github.token }}
185+
ports:
186+
- 2181:2181
187+
- 9092:9092
188+
env:
189+
ADVERTISED_HOST: "localhost"
190+
ADVERTISED_PORT: 9092
191+
mongo:
192+
image: ghcr.io/${{ github.repository}}/ci-mongodb:${{ github.sha }}
193+
ports:
194+
- 27017:27017
195+
- 27018:27018
196+
- 27019:27019
197+
steps:
198+
- name: Checkout
199+
uses: actions/checkout@v4
200+
- uses: actions/setup-node@v4
184201
with:
185-
testsuite: ingestion
186-
token: ${{ secrets.CODECOV_TOKEN }}
202+
node-version: '22'
203+
cache: yarn
204+
- name: Install node dependencies
205+
run: yarn install --ignore-engines --frozen-lockfile --network-concurrency 1
187206

188-
- name: run misc functional tests
207+
- name: Run ${{ matrix.testsuite }} tests
189208
uses: ./.github/actions/ft-test
190209
with:
191-
testsuite: lib
210+
testsuite: ${{ matrix.testsuite }}
192211
token: ${{ secrets.CODECOV_TOKEN }}
212+
runner: ${{ matrix.runner }}
213+
env: ${{ matrix.env != '' && matrix.env || toJSON('{}') }}
193214

194-
- name: run backbeat notification feature tests
195-
uses: ./.github/actions/ft-test
215+
ft-ballooning:
216+
needs: build
217+
runs-on: ubuntu-latest
218+
services:
219+
redis:
220+
image: redis:alpine
221+
ports:
222+
- 6379:6379
223+
syntheticbucketd:
224+
image: ghcr.io/${{ github.repository }}/syntheticbucketd:${{ github.sha }}
225+
ports:
226+
- 9001:9001
227+
kafka:
228+
image: ghcr.io/${{ github.repository }}/ci-kafka:${{ github.sha }}
229+
credentials:
230+
username: ${{ github.repository_owner }}
231+
password: ${{ github.token }}
232+
ports:
233+
- 2181:2181
234+
- 9092:9092
235+
env:
236+
ADVERTISED_HOST: "localhost"
237+
ADVERTISED_PORT: 9092
238+
mongo:
239+
image: ghcr.io/${{ github.repository}}/ci-mongodb:${{ github.sha }}
240+
ports:
241+
- 27017:27017
242+
- 27018:27018
243+
- 27019:27019
244+
steps:
245+
- name: Checkout
246+
uses: actions/checkout@v4
247+
- uses: actions/setup-node@v4
196248
with:
197-
testsuite: notification
198-
token: ${{ secrets.CODECOV_TOKEN }}
249+
node-version: '22'
250+
cache: yarn
251+
- name: Install node dependencies
252+
run: yarn install --ignore-engines --frozen-lockfile --network-concurrency 1
199253

200254
- name: run ballooning tests for lifecycle conductor
201255
run: yarn mocha tests/performance/lifecycle/conductor-check-memory-balloon.js --exit

0 commit comments

Comments
 (0)