Full Changelog 1.0.2
Released 2026-09-04 · v7.1.2.a · 3 issues · 1 feature · 3 fixes
The complete record: every commit in the release, grouped by type, including work that never reaches a customer-facing note. The external changelog is the readable summary of the same release.
Features
-
DEV-2332 - FT Configs > ACS > "config_custom_data.xml" > Configuration file missing
Bug Fixes
-
The health groups answer 401, so the service cannot be liveness-probed (#32)
SecurityAccessPropertieswhitelists/actuator/**, but application.yml overrides that list with two exact paths, and a bound List replaces the default rather than adding to it./actuator/healththerefore matches only itself:/actuator/health/livenessand/actuator/health/readinessfall through to the authenticated rules and answer 401.A kubelet counts 401 as a failed probe, so configuring liveness against the group would restart this service in a loop — which is why it is one of only two Java services in the platform still running without a liveness probe.
Both entries are needed: Ant
/**does not match the bare path.Also states
management.endpoint.health.probes.enabled. Spring Boot enables the groups by itself only when it detects Kubernetes, so without this the endpoint a probe is aimed at 404s everywhere else — including in CI. -
version.xml
-
Changelog
Documentation
-
Regenerate changelog for release 1.0.1
-
Pin docker image to explicit version instead of latest tag
-
Add changelog for 1.0.1 build 0.0.2
Build
-
Pin the boot jar name instead of working around its absence
Reviewer was right that the previous commit treated a symptom. The Dockerfile located the jar with
find … ! -name "*-plain.jar"because the name was unpredictable — but the name being unpredictable was itself the defect, and it had already grown a chain of workarounds around it.version = '0.0.1-SNAPSHOT'is set, so Gradle produced ft-configs-service-0.0.1-SNAPSHOT.jar alongside a -plain.jar. Every consumer coped them then COPIED it to a fixed name, and Dockerfile.simple hardcoded that copy. Four moving parts, each silently wrong the day someone sets a real version — and the hardcoded name in Dockerfile.simple worked only by accident of that copy step.Two lines in build.gradle remove all of it:
bootJar { archiveFileName }fixes the name independently of the version, andjar { enabled = false }stops producing the plain jar, which was only ever there to be filtered out. This is an application, not a library, and there is no publishing block, so nothing consumed it.Everything downstream is now direct rather than defensive: the Dockerfile COPYs the known path, and the workflows assert the file exists instead of searching for it.
Note this was not cosmetic. With the name pinned, the two
cp "$JAR_PATH" build/libs/ft-configs-service.jarsteps became a copy of a file onto itself, whichcprefuses — leaving them would have broken both release pipelines.Verified: build.gradle parses (
gradlew help), all six workflows are still valid YAML,docker build --checkclean on both Dockerfiles, and nofind build/libs,-plain.jarfilter or self-copy remains anywhere in the repository.
Docker Images
ft-configs-service
- Image
-
hub.friendly-tech.com/configs/ft-configs-service:v1.0.2-b0.0.1 - SHA256
-
sha256:b49c2a000715d904bb113c8579bbd0316329a5101673584221abefb8c3516bb9
Dependencies
-
ACS → FT Configs Service
v1.0.2-b0.0.1 -
UI Backend → ACS
v7.1.2-b0.0.1 -
UI Portals → UI Backend
v7.1.2-b0.0.1 -
FT Device Network → ACS
v7.1.2-b0.0.1 -
UI AI Agent → UI Backend
v7.1.2-b0.0.1 -
UI AI Agent → FT Device Network
v1.0.3-b0.0.1