CI Pipeline
The CI pipeline runs on every push and pull request to validate code quality, build all components, and run tests. It uses parallel jobs for independent build steps and caching for faster execution.
Source file: .github/work-flows/ci.yml
Triggers
| Event | Branches | Conditions |
|---|---|---|
| Push | main, develop, feature/**, release/** | Paths except docs/** and *.md |
| Pull Request | main, develop | Opened, synchronized, reopened |
Jobs
1. Lint and Static Analysis
jobs:
lint:
name: Lint & Static Analysis
runs-on: ubuntu-latest| Check | Tool | Scope |
|---|---|---|
| Checkstyle | Maven checkstyle plugin | All Java services in control-plane/ |
| SpotBugs | Maven spotbugs plugin | All Java services (non-blocking) |
2. Build Commons
Builds shared Java libraries in commons/commons-java/:
jobs:
build-commons:
name: Build Commons
runs-on: ubuntu-latestInstalls commons to the local Maven repository for downstream service builds.
3. Build Control Plane Services
Builds all Java Spring Boot services in control-plane/:
| Service | Build |
|---|---|
| config-service | Maven package |
| iam-service | Maven package |
| tenant-service | Maven package |
| notification-service | Maven package |
| audit-service | Maven package |
| billing-service | Maven package |
| api-gateway | Maven package |
4. Build Data Plane Services
Builds data plane Java and Python services:
| Service | Build Tool |
|---|---|
| query-engine | Maven |
| pipeline-service | Maven |
| ai-service | pip install + pytest |
| ml-service | pip install + pytest |
| data-quality-service | pip install + pytest |
5. Build Frontend
Builds React/Vite frontend applications:
| Application | Build |
|---|---|
| bi-workbench | npm ci + npm run build |
| ml-workbench | npm ci + npm run build |
| control-plane-ui | npm ci + npm run build |
Environment Variables
env:
JAVA_VERSION: '21'
REGISTRY: ghcr.io/${{ github.repository_owner }}
MAVEN_OPTS: '-Xmx2048m -XX:+UseG1GC'Caching Strategy
| Cache | Key | Scope |
|---|---|---|
| Maven | setup-java cache option | Per-commit hash |
| npm | node_modules | Per package-lock.json hash |
| pip | ~/.cache/pip | Per requirements.txt hash |
Related Pages
- CD Deployment Workflow -- Deployment pipeline
- Build System -- Local build scripts