step 9: single image CI/CD, drop FE/BE split
Some checks failed
CI/CD / detect-changes (push) Successful in 4s
CI/CD / test-frontend (push) Failing after 5s
CI/CD / test-sqlite (push) Successful in 2m37s
CI/CD / test-go-pg (push) Successful in 1m53s
CI/CD / build-and-deploy (push) Has been skipped

CI pipeline: replace separate FE + BE image builds with single unified
Dockerfile. Remove FE_IMAGE, FE_REPLICAS, FE_* resource vars. Simplify
build/push/deploy to single IMAGE. Remove frontend.yaml k8s manifest.
Remove provider integration test env vars (PROVIDER, PROVIDER_KEY,
VENICE_API_KEY). Remove EXTRACTION_CONCURRENCY.

Delete server/Dockerfile (backend-only image, superseded by root
Dockerfile). Delete k8s/frontend.yaml (no separate FE deployment).

Update ROADMAP: steps 5-7 and 9 marked complete. Step 8 (ICD) partial.
Step 10 (smoke test + tag) is all that remains for v0.1.0.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-26 11:10:47 +00:00
parent ec750f4981
commit 71d448406c
4 changed files with 46 additions and 240 deletions

View File

@@ -1,99 +0,0 @@
# k8s/frontend.yaml
# ============================================
# Switchboard Core - Frontend Deployment
# ============================================
# nginx serving the SPA + proxying page routes
# to the backend for Go template rendering.
#
# v0.22.6+: BACKEND_URL enables proxy_pass for
# /, /login, /admin, /editor, /notes, /settings.
# ============================================
apiVersion: apps/v1
kind: Deployment
metadata:
name: switchboard-fe${DEPLOY_SUFFIX}
namespace: ${NAMESPACE}
labels:
app: switchboard
component: frontend
env: ${ENVIRONMENT}
spec:
replicas: ${FE_REPLICAS}
selector:
matchLabels:
app: switchboard
component: frontend
env: ${ENVIRONMENT}
template:
metadata:
labels:
app: switchboard
component: frontend
env: ${ENVIRONMENT}
spec:
containers:
- name: frontend
image: ${FE_IMAGE}:${IMAGE_TAG}
imagePullPolicy: Always
ports:
- containerPort: 80
name: http
env:
- name: BASE_PATH
value: "${BASE_PATH}"
- name: ENVIRONMENT
value: "${ENVIRONMENT}"
- name: BACKEND_URL
value: "http://switchboard-be${DEPLOY_SUFFIX}:8080"
volumeMounts:
- name: branding
mountPath: /branding
readOnly: true
resources:
requests:
memory: "${FE_MEMORY_REQUEST}"
cpu: "${FE_CPU_REQUEST}"
limits:
memory: "${FE_MEMORY_LIMIT}"
cpu: "${FE_CPU_LIMIT}"
readinessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 3
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 5
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
volumes:
- name: branding
configMap:
name: switchboard-branding
optional: true
---
apiVersion: v1
kind: Service
metadata:
name: switchboard-fe${DEPLOY_SUFFIX}
namespace: ${NAMESPACE}
labels:
app: switchboard
component: frontend
env: ${ENVIRONMENT}
spec:
selector:
app: switchboard
component: frontend
env: ${ENVIRONMENT}
ports:
- protocol: TCP
port: 80
targetPort: 80
name: http