Parallelize frontend tests in Drone pipeline with 4 shards
Split the monolithic "build and test" kaniko step into a DAG: tests run in 4 parallel shards (vitest --shard) alongside the Docker image build, gated by a shared npm ci step. The kaniko build now targets the named 'production' stage to skip the in-Dockerfile test stage.
This commit is contained in:
parent
a36c0dfdf7
commit
15dbcfa332
2 changed files with 58 additions and 2 deletions
58
.drone.yml
58
.drone.yml
|
|
@ -30,8 +30,55 @@ steps:
|
|||
exit 1
|
||||
- git checkout "$DRONE_COMMIT"
|
||||
|
||||
- name: Build and test frontend image
|
||||
- name: install-frontend-deps
|
||||
image: node:24-alpine
|
||||
depends_on:
|
||||
- clone
|
||||
environment:
|
||||
NODE_OPTIONS: "--max-old-space-size=1024"
|
||||
commands:
|
||||
- cd frontend && npm ci
|
||||
|
||||
- name: test-shard-1
|
||||
image: node:24-alpine
|
||||
depends_on:
|
||||
- install-frontend-deps
|
||||
environment:
|
||||
NODE_OPTIONS: "--max-old-space-size=1024"
|
||||
commands:
|
||||
- cd frontend && npx vitest run --reporter=verbose --shard=1/4
|
||||
|
||||
- name: test-shard-2
|
||||
image: node:24-alpine
|
||||
depends_on:
|
||||
- install-frontend-deps
|
||||
environment:
|
||||
NODE_OPTIONS: "--max-old-space-size=1024"
|
||||
commands:
|
||||
- cd frontend && npx vitest run --reporter=verbose --shard=2/4
|
||||
|
||||
- name: test-shard-3
|
||||
image: node:24-alpine
|
||||
depends_on:
|
||||
- install-frontend-deps
|
||||
environment:
|
||||
NODE_OPTIONS: "--max-old-space-size=1024"
|
||||
commands:
|
||||
- cd frontend && npx vitest run --reporter=verbose --shard=3/4
|
||||
|
||||
- name: test-shard-4
|
||||
image: node:24-alpine
|
||||
depends_on:
|
||||
- install-frontend-deps
|
||||
environment:
|
||||
NODE_OPTIONS: "--max-old-space-size=1024"
|
||||
commands:
|
||||
- cd frontend && npx vitest run --reporter=verbose --shard=4/4
|
||||
|
||||
- name: build-frontend-image
|
||||
image: plugins/kaniko
|
||||
depends_on:
|
||||
- clone
|
||||
resources:
|
||||
limits:
|
||||
memory: 2048MiB
|
||||
|
|
@ -42,6 +89,7 @@ steps:
|
|||
repo: viktorbarzin/immoweb
|
||||
dockerfile: frontend/Dockerfile
|
||||
context: frontend
|
||||
target: production
|
||||
enable_cache: true
|
||||
cache_repo: viktorbarzin/immoweb-cache
|
||||
tags:
|
||||
|
|
@ -50,12 +98,20 @@ steps:
|
|||
|
||||
- name: Update deployment
|
||||
image: alpine
|
||||
depends_on:
|
||||
- test-shard-1
|
||||
- test-shard-2
|
||||
- test-shard-3
|
||||
- test-shard-4
|
||||
- build-frontend-image
|
||||
commands:
|
||||
- apk add curl
|
||||
- 'curl -s -X PATCH "https://kubernetes:6443/apis/apps/v1/namespaces/realestate-crawler/deployments/realestate-crawler-ui" -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" -H "Content-Type: application/json-patch+json" -k -d ''[{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"viktorbarzin/immoweb:''"$DRONE_BUILD_NUMBER"''"}]'' | head'
|
||||
|
||||
- name: verify-deploy
|
||||
image: alpine
|
||||
depends_on:
|
||||
- Update deployment
|
||||
commands:
|
||||
- apk add --no-cache curl jq
|
||||
- |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue