diff --git a/charts/roost/templates/roost-ai-code-analyzer.yaml b/charts/roost/templates/roost-ai-code-analyzer.yaml new file mode 100644 index 0000000..69cba9a --- /dev/null +++ b/charts/roost/templates/roost-ai-code-analyzer.yaml @@ -0,0 +1,179 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: roost-ai-code-analyzer-config + namespace: {{ .Release.Namespace }} +data: + DATABASE_URL: 'postgresql://{{ .Values.aiCodeAnalyzer.db.user }}:{{ .Values.aiCodeAnalyzer.db.password }}@ai-code-analyzer-db-svc.{{ .Release.Namespace }}.svc.{{ .Values.clusterDomain }}:5432/{{ .Values.aiCodeAnalyzer.db.database }}' + POSTGRES_DB: '{{ .Values.aiCodeAnalyzer.db.database }}' + POSTGRES_USER: '{{ .Values.aiCodeAnalyzer.db.user }}' + POSTGRES_PASSWORD: '{{ .Values.aiCodeAnalyzer.db.password }}' + +--- +apiVersion: v1 +kind: Service +metadata: + name: ai-code-analyzer-svc + namespace: {{ .Release.Namespace }} +spec: + selector: + app: ai-code-analyzer + ports: + - protocol: TCP + port: 5060 + targetPort: 5060 + +--- +apiVersion: v1 +kind: Service +metadata: + name: ai-code-analyzer-db-svc + namespace: {{ .Release.Namespace }} +spec: + selector: + app: ai-code-analyzer-db + ports: + - protocol: TCP + port: 5432 + targetPort: 5432 + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ai-code-analyzer-pvc-{{ .Release.Namespace }} + namespace: {{ .Release.Namespace }} +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: {{ .Values.aiCodeAnalyzer.storage.size }} +{{- include "cluster.storageClassName" . | indent 2 }} + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: ai-code-analyzer-db-pvc-{{ .Release.Namespace }} + namespace: {{ .Release.Namespace }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.aiCodeAnalyzer.db.storage.size }} +{{- include "cluster.storageClassName" . | indent 2 }} + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai-code-analyzer-db + namespace: {{ .Release.Namespace }} +spec: + replicas: 1 + selector: + matchLabels: + app: ai-code-analyzer-db + template: + metadata: + labels: + app: ai-code-analyzer-db + spec: + containers: + - name: ai-code-analyzer-db + image: postgres:18-alpine + envFrom: + - configMapRef: + name: roost-ai-code-analyzer-config + env: + - name: PGDATA + value: /var/lib/postgresql/data + ports: + - containerPort: 5432 + volumeMounts: + - mountPath: /var/lib/postgresql/data + name: ai-code-analyzer-db-storage + livenessProbe: + exec: + command: + - pg_isready + - -U + - {{ .Values.aiCodeAnalyzer.db.user }} + initialDelaySeconds: 30 + periodSeconds: 10 + readinessProbe: + exec: + command: + - pg_isready + - -U + - {{ .Values.aiCodeAnalyzer.db.user }} + initialDelaySeconds: 10 + periodSeconds: 5 + imagePullPolicy: Always + volumes: + - name: ai-code-analyzer-db-storage + persistentVolumeClaim: + claimName: ai-code-analyzer-db-pvc-{{ .Release.Namespace }} + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: ai-code-analyzer + namespace: {{ .Release.Namespace }} +spec: + replicas: {{ .Values.aiCodeAnalyzer.replicas }} + selector: + matchLabels: + app: ai-code-analyzer + template: + metadata: + labels: + app: ai-code-analyzer + annotations: + checksum/config: {{ toYaml (pick .Values "aiCodeAnalyzer") | sha256sum }} + spec: + securityContext: + runAsNonRoot: true + runAsUser: 10001 + runAsGroup: 10001 + fsGroup: 10001 + initContainers: + - name: wait-for-db + image: postgres:18-alpine + command: + - sh + - -c + - | + until pg_isready -h ai-code-analyzer-db-svc -p 5432 -U {{ .Values.aiCodeAnalyzer.db.user }}; + do + echo "Waiting for postgres..." + sleep 2 + done + containers: + - name: ai-code-analyzer + image: zbio/ai-io:{{ .Values.aiCodeAnalyzer.imageTag }} + envFrom: + - configMapRef: + name: roost-ai-code-analyzer-config + ports: + - containerPort: 5060 + volumeMounts: + - mountPath: /app/chroma_db + subPath: chroma_db + name: ai-code-analyzer-storage + - mountPath: /app/jobs + subPath: jobs + name: ai-code-analyzer-storage + - mountPath: /app/test_artifacts + subPath: test_artifacts + name: ai-code-analyzer-storage + imagePullPolicy: Always + volumes: + - name: ai-code-analyzer-storage + persistentVolumeClaim: + claimName: ai-code-analyzer-pvc-{{ .Release.Namespace }} + +--- \ No newline at end of file diff --git a/charts/roost/templates/roost-nginx.yaml b/charts/roost/templates/roost-nginx.yaml index 0918b6e..a42ed77 100644 --- a/charts/roost/templates/roost-nginx.yaml +++ b/charts/roost/templates/roost-nginx.yaml @@ -11,6 +11,11 @@ data: UI_SERVICE_NAME: roostai-react-app:4200 UI_SERVICE_PORT: '4200' K8S_MODE: 'true' + AI_CODE_ANALYZER_SERVICE_NAME: ai-code-analyzer-svc:5060 + AI_CODE_ANALYZER_SERVICE_PORT: '5060' + AI_CODE_ANALYZER_SUBDOMAIN: 'f{{ .Values.enterprise.domainURL }}' + AI_ANALYZER_DOMAIN: 'f{{ .Values.enterprise.domainURL }}' + MAIN_DOMAIN: '{{ .Values.enterprise.domainURL }}' --- apiVersion: v1 @@ -117,11 +122,31 @@ spec: namespace: {{ .Release.Namespace }} hostnames: - {{ .Values.enterprise.domainURL | quote }} + rules: + - matches: + - path: + type: PathPrefix + value: / + backendRefs: + - name: roost-nginx-svc + port: 80 + +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: roost-ai-code-analyzer-route + namespace: {{ .Release.Namespace }} +spec: + parentRefs: + - name: roost-gateway + namespace: {{ .Release.Namespace }} + hostnames: + - {{ printf "f%s" .Values.enterprise.domainURL | quote }} rules: - backendRefs: - name: roost-nginx-svc port: 80 - --- {{- else }} diff --git a/charts/roost/values.yaml b/charts/roost/values.yaml index 64c18b4..dce581b 100644 --- a/charts/roost/values.yaml +++ b/charts/roost/values.yaml @@ -233,4 +233,22 @@ pvcs: eaasServerIp: '' eaasServerPemKey : '' -eaasServerUsername : 'roost' \ No newline at end of file +eaasServerUsername : 'roost' + +aiCodeAnalyzer: + enabled: true + + replicas: 1 + + imageTag: latest + + storage: + size: 20Gi + + db: + database: code_parser + user: postgres + password: '12345678' + + storage: + size: 20Gi \ No newline at end of file diff --git a/releases/index.yaml b/releases/index.yaml index a7c610b..d1f8a9c 100644 --- a/releases/index.yaml +++ b/releases/index.yaml @@ -3,12 +3,12 @@ entries: roost: - apiVersion: v2 appVersion: 1.0.0 - created: "2026-03-25T16:17:21.816689+05:30" + created: "2026-05-13T13:43:46.603176+05:30" description: Roost.ai, an End-to-End Testing platform using Generative AI. - digest: a56481164a691168c138d096020ac43f98350a84695c463d06e1d211552eaec6 + digest: d1626eade9a17698c2cda4e142597315366ae6a568440d8e2a61a855bb7b7f95 name: roost type: application urls: - https://roost-io.github.io/helm/releases/roost-1.0.0.tgz version: 1.0.0 -generated: "2026-03-25T16:17:21.815145+05:30" +generated: "2026-05-13T13:43:46.601318+05:30" diff --git a/releases/roost-1.0.0.tgz b/releases/roost-1.0.0.tgz index e067005..2e3c35e 100644 Binary files a/releases/roost-1.0.0.tgz and b/releases/roost-1.0.0.tgz differ