feat: modernize application — source, platform artifacts, CI/CD
All checks were successful
Build and Publish TechDocs / build-and-publish (push) Successful in 51s

- chore: ingest source code

112 files from https://github.com/spring-projects/spring-petclinic
- feat: add platform deployment artifacts
- feat: add CI/CD workflow automation
This commit is contained in:
2026-08-03 13:25:08 +00:00
parent 02eb6fd4b6
commit 1841c4a78d
14 changed files with 863 additions and 575 deletions

View File

@@ -1,55 +1,36 @@
apiVersion: score.dev/v1b1
metadata:
name: demo-1-marketing
labels:
app: demo-1-marketing
containers:
main:
demo-1-marketing:
image: .
variables:
# The Watcher's OTel work lands in overlays/otel/, which only ArgoCD reads. On the
# orchestrator path nothing consumes that overlay, so without these variables the
# renovated app emits no telemetry at all and never appears in Grafana.
OTEL_SERVICE_NAME: "demo-1-marketing"
OTEL_EXPORTER_OTLP_ENDPOINT: "http://otel-collector.monitoring.svc.cluster.local:4318"
OTEL_EXPORTER_OTLP_PROTOCOL: "http/protobuf"
OTEL_RESOURCE_ATTRIBUTES: "service.name=demo-1-marketing"
OTEL_METRICS_EXPORTER: "otlp"
OTEL_TRACES_EXPORTER: "otlp"
OTEL_LOGS_EXPORTER: "none"
service:
ports:
web:
port: 80
targetPort: 8080
OTEL_SERVICE_NAME: demo-1-marketing
OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-collector.monitoring.svc.cluster.local:4318
OTEL_EXPORTER_OTLP_PROTOCOL: http/protobuf
OTEL_RESOURCE_ATTRIBUTES: service.name=demo-1-marketing,app=demo-1-marketing
OTEL_METRICS_EXPORTER: otlp
OTEL_TRACES_EXPORTER: otlp
OTEL_LOGS_EXPORTER: none
metadata:
annotations:
prometheus.io/path: /metrics
prometheus.io/port: '8080'
prometheus.io/scrape: 'true'
labels:
app: demo-1-marketing
backstage.io/kubernetes-id: demo-1-marketing
name: demo-1-marketing
resources:
env:
type: environment
# Gives the renovated workload a public HTTPS URL. Without this the deploy still goes
# green and the pod still runs -- there is simply no Ingress, no certificate and no
# hostname, so the demo's payoff (curl the renovated app) has nothing to hit.
#
# hostname is hardcoded to the apps domain deliberately: it is the only domain the apps
# cluster serves, and both the wildcard A record (*.apps.dev) and the cert-manager
# ClusterIssuer are scoped to exactly it.
#
# service_port is the Score `service.ports.web.port` below (80), NOT the container port.
# An Ingress naming a Service or port that does not exist fails at neither plan nor
# apply -- it surfaces only as nginx answering 503.
#
# CAVEAT: modernization-factory's generate_score_yaml rewrites BOTH `port` and
# `targetPort` to the detected application port whenever that port is not 8080. An app
# on 3000 therefore ends up with a Service on 3000 and this Ingress pointing at a port
# that no longer exists. Apps already listening on 8080 (Spring PetClinic among them)
# skip that patch entirely and are unaffected.
ingress:
type: workload-ingress
params:
name: demo-1-marketing
hostname: demo-1-marketing.apps.dev.crucible.kyndemo.live
name: demo-1-marketing
service_name: demo-1-marketing
service_port: 80
service_port: 8080
type: workload-ingress
service:
ports:
http:
port: 8080
targetPort: 8080