SERVICE param is already 'tenant-service' etc., compose services are named
the same. Removing the replace() that was stripping the '-service' suffix.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
docker and ssh are both natively available on Windows. Credential vars
(%ACR_PASS%, %SSH_KEY%) use bat syntax; Groovy vars use GString.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
OpsController: GET /api/ops/service-requests (with optional status filter),
POST /api/ops/service-requests/{id}/approve, POST .../reject.
OpsService: listServiceRequests() delegates to existing repository queries.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove separate Maven stage. The multi-stage Dockerfile already runs mvn
inside a Linux container, so Windows Jenkins just runs docker build/push.
Server-side docker login pre-configured; deploy only needs docker pull.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Run mvn inside maven:3.9-eclipse-temurin-21 Linux container via Docker
Pipeline plugin; Docker/SSH deploy stages remain on native agent so
Docker Desktop socket is available for image push and SSH for deploy.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Jenkinsfile: set ACR registry to crpi-n44qjpuucgjt8e8c.cn-beijing.personal.cr.aliyuncs.com
- tenant-service: fix email SMTP to smtp.sina.com port 465 with SSL
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>