feat: implement proto-gen platform

- Config loader with env var expansion and validation
- SQLite database with tasks and toolchain_versions tables
- Gitea REST API client for repository and branch operations
- K8s client for Job lifecycle management (with noop fallback for local dev)
- REST API: tasks CRUD, retry, plugins, version management
- Worker/scheduler with polling, concurrency control, and job tracking
- Static frontend: generate, tasks, settings pages
- Toolchain images: Go and Node.js Dockerfiles with entrypoint scripts
- Helm chart with deployment, service, configmap, ingress, PVC
- Multi-stage Dockerfile for service
- Unit tests for config, database, gitclient, k8s, api, worker
- E2E tests for idempotency, version switch, failure recovery
This commit is contained in:
2026-08-10 16:54:30 +08:00
parent cc478bdad4
commit 4e467e1136
43 changed files with 3179 additions and 1 deletions
+54
View File
@@ -0,0 +1,54 @@
replicaCount: 1
image:
repository: registry.example.com/proto-gen
tag: "latest"
pullPolicy: IfNotPresent
git:
baseUrl: "https://git.example.com"
tokenSecret: "proto-gen-git-token"
cluster:
kubeconfigSecret: "proto-gen-kubeconfig"
namespace: proto-gen-jobs
jobTimeout: 600
maxConcurrent: 2
toolchainRegistry: "registry.example.com/proto-gen"
targetRepoTemplate: "{proto_repo}-gen-{lang}"
plugins:
- language: go
image: "proto-gen-go:v1.34.2"
- language: nodejs
image: "proto-gen-ts:v0.9.0"
service:
type: ClusterIP
port: 8080
ingress:
enabled: false
className: ""
annotations: {}
hosts:
- host: gen.example.com
paths:
- path: /
pathType: Prefix
tls: []
persistence:
enabled: true
storageClass: ""
size: 1Gi
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}