2.4 KiB
2.4 KiB
Frontend Builder — CI Image
Pre-baked build environment for KollectAI-ETL frontend (SvelteKit) CI jobs and protobuf TypeScript code generation.
What's included
- Node.js 24 (
node:24-bookworm-slim) - pnpm 10 (via corepack)
- buf CLI — for
buf lintandbuf generate @bufbuild/protoc-gen-es— installed globally sobufv2local: protoc-gen-esresolves via PATH (no BSR remote-plugin calls)- Playwright chromium runtime libraries pre-installed (
libnss3,libgbm1,libasound2, etc.) — soplaywright install chromiumworks without--with-depsapt fetches - ORAS CLI — for uploading test reports / audit artifacts to Harbor
git,jq,curl,unzip
Build
docker build -t 192.168.1.72/kollect-tools/ci/frontend-builder:latest ci/frontend-builder/
docker push 192.168.1.72/kollect-tools/ci/frontend-builder:latest
Build args
| Arg | Default | Description |
|---|---|---|
NODE_MAJOR |
24 |
Node.js major version (matches Node base image) |
PNPM_VERSION |
10.15.0 |
pnpm version (corepack-activated) |
BUF_VERSION |
1.55.0 |
buf CLI version |
PROTOC_GEN_ES_VERSION |
2.12.0 |
@bufbuild/protoc-gen-es version (ad-hoc use only — KollectAI-ETL CI uses the version pinned in proto/pnpm-lock.yaml) |
ORAS_VERSION |
1.2.2 |
ORAS CLI version |
Usage in CI
jobs:
test-unit:
runs-on: ubuntu-latest
container:
image: 192.168.1.72/kollect-tools/ci/frontend-builder:latest
steps:
- uses: actions/checkout@v6
- run: pnpm install --frozen-lockfile
working-directory: frontend/svelte
- run: pnpm test
working-directory: frontend/svelte
For protobuf TS codegen (buf.gen.yaml declares local: protoc-gen-es):
- name: Generate proto TS bindings
working-directory: proto
run: buf generate
For Playwright E2E (drop --with-deps because system libs are pre-installed):
- name: Install Playwright browsers
working-directory: frontend/svelte
run: pnpm exec playwright install chromium
Maintenance
Rebuild on dependency bumps:
- New Node major → bump
NODE_MAJOR, push image - pnpm bump → bump
PNPM_VERSION, push image - buf protocol changes → bump
BUF_VERSIONandPROTOC_GEN_ES_VERSION, push image
The CI workflow's weekly schedule rebuilds the image to keep base layers patched.