Software Templates

Standardisierte Projektvorlagen für .NET, React und Plattform-Services

Software Templates erzeugen nicht nur Code. Sie bereiten Catalog-Entity, TechDocs, CI/CD, SonarCloud-Projekt, Azure-DevOps-Struktur und AccessHub-Mapping vor.

Templates

6

Gesamt im Katalog

Published

5

Freigegebene Vorlagen

Scaffolds (30d)

53

Erzeugte Services

Owner-Teams

3

Plattform-Teams

Nutzungstrend (6 Monate)

Nov18Dec14Jan22Feb27Mar41Apr53

Template Lifecycle

1Draft

Template Author entwickelt, noch nicht freigegeben, keine öffentliche Sichtbarkeit

2Review

Plattform-Review, Security-Review, TechDocs-Check, Pilot mit 1-2 Teams

3Published

Freigegeben für alle Teams, katalogisiert, SLA für Pflege gilt

4Deprecated

Nur Wartung, neue Scaffolds blockiert, Migration-Guide vorhanden

Templates

published

.NET Web API

Standard-API mit OpenAPI, Health Checks, Logging, SonarCloud

Version
2.4.1
30d Nutzung
18x
Owner
platform-core
Ø Dauer
42s
published

React Frontend

Frontend mit Build, Tests, Security Headers, TechDocs

Version
3.1.0
30d Nutzung
12x
Owner
platform-frontend
Ø Dauer
38s
published

.NET Worker

Hintergrunddienst mit Queue-/Event-Verarbeitung

Version
1.8.3
30d Nutzung
7x
Owner
platform-core
Ø Dauer
34s
published

Shared Library

Bibliothek mit Versionierung, Tests, SonarCloud-Projekt

Version
1.2.0
30d Nutzung
5x
Owner
platform-core
Ø Dauer
21s
review

Full Stack Service

API + Frontend + Infrastruktur-Grundstruktur

Version
0.9.0-rc.2
30d Nutzung
2x
Owner
platform-core
Ø Dauer
71s
published

TechDocs Site

Reine Dokumentations-Entity ohne Code-Service

Version
1.1.0
30d Nutzung
9x
Owner
platform-docs
Ø Dauer
12s

Artifact-Matrix pro Template

Welche Artefakte werden beim Scaffolding erzeugt?

TemplateRepocatalog-infoTechDocsCI/CDSonarCloudADO / GHAccessHubSecurity Doc
.NET Web API
React Frontend
.NET Worker
Shared Library
Full Stack Service
TechDocs Site

Scaffolding-Pipeline

Schritt-für-Schritt Ausführung beim Anlegen eines neuen Service

  1. 1

    fetch:template

    2-4s

    Template-Skeleton aus Repo oder Registry laden

  2. 2

    render:parameters

    1s

    Benutzereingaben ersetzen (name, owner, tenant, description)

  3. 3

    publish:repository

    8-15s

    Neues Repo in Azure DevOps / GitHub anlegen, Default Branch und Policies setzen

  4. 4

    register:catalog

    3-6s

    catalog-info.yaml committen, Location im Backstage Catalog registrieren

  5. 5

    provision:sonar

    5-10s

    SonarCloud-Projekt erzeugen oder beantragen, Quality Gate verknüpfen

  6. 6

    provision:pipeline

    10-20s

    CI/CD anlegen, Service Connection zuweisen, Branch Policies aktivieren

  7. 7

    provision:access

    4-8s

    AccessHub-Rollenpaket für das neue Service-Ownership-Team vorbereiten

  8. 8

    notify:owner

    1-2s

    Owner und Platform-Team per Notification informieren, Onboarding-Checklist anhängen

Parameter-Beispiel (Backstage Scaffolder)

apiVersion: scaffolder.backstage.io/v1beta3
kind: Template
metadata:
  name: hermos-dotnet-webapi
  title: HERMOS .NET Web API
  description: Standard-API mit OpenAPI, Health Checks, Logging, SonarCloud
  tags: [dotnet, webapi, hermos-v3]
spec:
  owner: group:default/platform-core
  type: service
  parameters:
    - title: Service Identität
      required: [serviceName, owner, tenant, criticality]
      properties:
        serviceName:
          type: string
          title: Service-Name
          pattern: '^[a-z][a-z0-9-]{2,40}$'
          description: Kleinbuchstaben, Zahlen, Bindestrich. Kein Präfix env/tenant
        owner:
          type: string
          title: Owner Team
          ui:field: OwnerPicker
          ui:options: { allowedKinds: [Group] }
        tenant:
          type: string
          title: Zieltenant
          enum: [tnt.hermos.com, fis.hermos.com, fise.hermos.com, dso.hermos.com]
        criticality:
          type: string
          enum: [low, medium, high, critical]
        repoVisibility:
          type: string
          enum: [private, internal]
          default: private
    - title: Technische Konfiguration
      properties:
        targetFramework:
          type: string
          enum: ['net8.0', 'net9.0']
          default: 'net9.0'
        enableOpenTelemetry:
          type: boolean
          default: true
  steps:
    - id: fetch
      action: fetch:template
      input:
        url: ./skeleton
        values:
          serviceName: ${{ parameters.serviceName }}
    - id: publish
      action: publish:azure
      input:
        repoUrl: dev.azure.com?repo=${{ parameters.serviceName }}
    - id: register
      action: catalog:register
      input:
        repoContentsUrl: ${{ steps.publish.output.repoContentsUrl }}
        catalogInfoPath: '/catalog-info.yaml'

Versions-Historie

TemplateVersionReleasedÄnderungBreaking
.NET Web API2.4.12026-04-10OpenTelemetry-Default, net9.0 Supportminor
.NET Web API2.4.02026-03-15Health-Check-Endpoint, SonarCloud-Integration v2minor
.NET Web API2.3.02026-01-20Azure Key Vault Reference Supportminor
.NET Web API2.0.02025-11-05Major: net8.0, Minimal API statt Controllerbreaking
React Frontend3.1.02026-04-14React 19, Vite 6minor
React Frontend3.0.02026-02-10Major: Vite statt Webpack, TypeScript strictbreaking
.NET Worker1.8.32026-03-22Azure Service Bus Renewal-Handlerminor
Full Stack Service0.9.0-rc.22026-04-18Release Candidate 2 (Review)minor

Quality Gates vor Publish

GateBeschreibungBlocking
Template LinterStrukturprüfung der Template-YAML (apiVersion, kind, spec.owner)blocking
Parameter-ValidierungPflichtfelder, Regex-Muster, enum-Werte vollständigblocking
Security ReviewKeine hardkodierten Secrets, keine öffentlichen Endpoints ohne Authblocking
TechDocs-Renderingmkdocs.yml wird erfolgreich generiert, keine Broken Linksblocking
SonarCloud MappingMapping-Block vorhanden oder explizite Ausnahme mit Begründungwarn
Ownership PlausibilitätOwner-Team existiert in Backstage Catalog und hat Mitgliederblocking
Pipeline Dry-RunCI/CD-Template läuft fehlerfrei gegen Sandbox-Tenantblocking
Dependency-ScanKeine kritischen CVEs in Template-Dependenciesblocking

Known Issues

IDTemplateIssueSeverityWorkaroundFix in
TPL-042.NET WorkerService Bus Listener race bei Multi-InstancemediumPartition Receiver aktivieren1.9.0
TPL-051React FrontendVite Dev-Server Port-Konflikt bei 3+ parallel ScaffoldslowVITE_PORT vor Start setzenkeine
TPL-067Full Stack ServiceAccessHub-Mapping fehlt initial, muss manuell ergänzt werdenhighNach Scaffolding manuell Rollenpaket beantragen1.0.0

Deprecation- / Rollback-Prozess

  1. 1

    Deprecation mark

    Template-Status auf deprecated setzen, neue Scaffolds sofort blockiert

  2. 2

    Notification

    Teams mit laufenden Services informieren (Services aus Catalog filtern)

  3. 3

    Migration-Guide

    Migration-Pfad zum Nachfolger-Template in TechDocs publizieren

  4. 4

    Grace Period

    Mindestens 90 Tage Bestandsschutz für Bestandsservices

  5. 5

    Archive

    Template-Repo read-only, Catalog-Entity als archived markieren

Erzeugte Artefakte

  • 1Repository oder Projektstruktur
  • 2catalog-info.yaml für Backstage
  • 3mkdocs.yml und TechDocs-Grundstruktur
  • 4CI/CD-Grundpipeline
  • 5SonarCloud-Projektverknüpfung oder Beantragung
  • 6Azure-DevOps- oder GitHub-Einstellungen
  • 7AccessHub-Entitlement-Mapping
  • 8Security-Grunddokumentation mit OWASP-Platzhaltern

Rechte-Matrix (Template-Aktionen)

AktionViewerDeveloperTech LeadPlatform
Template ansehen
Template ausführen (scaffold)
Prod-kritisches Template ausführen
Template ändern / neue Version
Template deprecation
Scaffolding-Logs einsehen
Parameter-Schema ändern
Template in anderem Tenant veröffentlichen

Compliance-Mapping

AspektFrameworks / Normen
Ownership verpflichtendISO 27001 A.6.1, NIS2 Art.21
Security-Scan PflichtISO 27001 A.14.2, OWASP SAMM
TechDocs verpflichtendISO 27001 A.8.1, Interne Revision
Branch Policies enforcedISO 27001 A.14.2.2, SOC 2 CC8.1
SBOM für ReleasesEU Cyber Resilience Act, NIST SP 800-218
Least-Privilege RBACISO 27001 A.9.2, BSI IT-Grundschutz

Controls / Governance

AktionSteuerung
Template ansehenBackstage Permission
Template ausführenBackstage Permission + AccessHub-Rollenpaket
Template ändernPlattformteam / Template Author
Prod-fähiges Template nutzenZusätzliche Genehmigung / Teamreifegrad
SonarCloud-Projekt automatisch anlegenAccessHub- oder Plattform-Fulfillment
Azure DevOps Service Connection erzeugenRestriktiver Plattformprozess

Semantic Versioning

Templates folgen MAJOR.MINOR.PATCH. Breaking Changes nur in MAJOR, Feature-Additionen in MINOR, Bugfixes in PATCH.

Template-Repo-Struktur

Jedes Template enthält template.yaml, skeleton/, docs/, tests/ und CHANGELOG.md. Pull Requests erzwingen Review.

Pipeline Dry-Run

Vor jedem Release wird das Template gegen einen Sandbox-Tenant ausgeführt und automatisch wieder aufgeräumt.