feat(lfc)!: support inline configuration service data in lifecycle.yaml#221
Merged
Conversation
Allow `configuration` services to declare key/value data inline in
lifecycle.yaml. The data is materialized onto the per-build
deployable.env via YamlService.getEnvironmentVariables (Option A), so it
flows through the existing full-yaml env pipeline rather than the
configurations table. Consuming services reference keys normally;
external-secret refs ({{aws:...}}) resolve transitively through the
consumer's own deploy pipeline.
- schema_1_0_0: the configuration block now takes `data` (required,
string map) and optional `branchName`; `defaultTag` is removed.
- Configuration deploys are skipped in resolve() so their (possibly
secret-bearing) data is never persisted as plaintext on the unused
config deploy's env.
- Classic (non-full-yaml) builds keep the configurations-table read; a
YAML-defined config without a serviceId now warns instead of being
silently dropped (no values logged).
- Remove the dead, superseded server/models/config module (no prod
importers; the live path uses server/models/yaml).
BREAKING CHANGE: the inline `configuration` block in lifecycle.yaml no
longer accepts `defaultTag` and now requires a `data` map of string
values. Existing inline configuration blocks using the old shape will
fail schema validation. Configs referenced by serviceId (classic mode)
are unaffected.
5466abc to
a7ae00e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds support for
configurationservices that declare their key/value data inline inlifecycle.yaml, instead of relying solely on theconfigurationsDB table.The data is materialized onto the per-build
deployable.envviaYamlService.getEnvironmentVariables(Option A), so it flows through the existing full-yaml env pipeline — the same path github/helm services already use. There is no redundant write-to-DB-then-read for YAML-defined config.Consuming services reference the keys normally (
{{FEATURE_FLAG}}). External-secret refs ({{aws:...}}) resolve transitively through the consuming service's own deploy pipeline — config deploys are never built or deployed, so they are never scanned directly.Changes
configurationblock now takesdata(required, map of string→string) and optionalbranchName;defaultTagis removed. Regenerated1.0.0.json+docs/schema/yaml/1.0.0.yamlaccordingly (configuration block only).CONFIGURATIONcase ingetEnvironmentVariablesreturnsconfiguration.data;ConfigurationServicetype updated.CONFIGURATIONdeploys so their (possibly secret-ref-bearing) data is never persisted as plaintext on the unused config deploy'senv.deployable.env; classic (non-full-yaml) builds keep theconfigurations-table read. A YAML-defined config without aserviceIdnow warns in classic mode (no values logged) instead of being silently dropped.server/models/configmodule (no production importers; the live path usesserver/models/yaml). Confirmed via static + dynamic import trace and an independent review pass.Breaking change
Warning
The inline
configurationblock no longer acceptsdefaultTagand now requires adatamap of string values. Existing inlineconfigurationblocks using the old{ defaultTag, branchName }shape will fail schema validation on next ingestion. Configs referenced byserviceId(classic mode) are unaffected.datavalues must be strings — quote scalars likePORT: "8080".Testing
eslintclean on touched files;tsc --project tsconfig.server.json --noEmit: 0 errors.configurationServiceEnvironmentstests cover: full-yaml sourcesdeployable.env(asserts theconfigurationstable is not queried), classic reads the table byserviceId/branchName, and classic-without-serviceIdresolves to empty without querying.Notes
schema_1_0_0), not the generated JSON; the generated1.0.0.json/docs YAML are editor/doc artifacts. The generator is additive-merge and has pre-existing drift unrelated to this change, so only theconfigurationblock was corrected here to avoid sweeping in unrelated schema deltas.