V13-FE-011: finalize search list layout slice
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# Generated KBX environment variable template. Do not commit real secret values.
|
||||
KBX__Runtime__Environment=Development
|
||||
KBX__Runtime__ReadOnly=false
|
||||
ConnectionStrings__Main= # secret: inject from environment/secret store
|
||||
KBX__Database__MigrationsMode=validate
|
||||
KBX__Database__CommandTimeoutSeconds=30
|
||||
KBX__Hangfire__Enabled=true
|
||||
KBX__Hangfire__WorkerCount=4
|
||||
KBX__SignalR__Enabled=true
|
||||
KBX__Outbox__DispatcherEnabled=true
|
||||
KBX__Inbox__CleanupEnabled=true
|
||||
KBX__Integration__DispatcherEnabled=true
|
||||
KBX__ExternalData__RefreshEnabled=true
|
||||
KBX__ExternalData__ObservationRetentionEnabled=true
|
||||
KBX__Experiments__Enabled=true
|
||||
KBX__Logging__MinimumLevel=Information
|
||||
KBX__Logging__JsonConsoleEnabled=true
|
||||
KBX__Telemetry__Enabled=true
|
||||
KBX__Telemetry__OtlpEndpoint=
|
||||
KBX__Telegram__Enabled=false
|
||||
KBX__Telegram__BotToken= # secret: inject from environment/secret store
|
||||
KBX__Telegram__ChatId= # secret: inject from environment/secret store
|
||||
ExternalProviders__Krx__Enabled=false
|
||||
ExternalProviders__Krx__AuthKey= # secret: inject from environment/secret store
|
||||
ExternalProviders__OpenDart__Enabled=false
|
||||
ExternalProviders__OpenDart__ApiKey= # secret: inject from environment/secret store
|
||||
ExternalProviders__Kis__Enabled=false
|
||||
ExternalProviders__Kis__Environment=sandbox
|
||||
ExternalProviders__Kis__AppKey= # secret: inject from environment/secret store
|
||||
ExternalProviders__Kis__AppSecret= # secret: inject from environment/secret store
|
||||
KBX__Security__RequireHttps=true
|
||||
KBX__Health__ReadinessEnabled=true
|
||||
KBX__Import__MaxUploadBytes=52428800
|
||||
KBX__Import__MaxRows=100000
|
||||
@@ -0,0 +1,25 @@
|
||||
# KBX Deployment Contract
|
||||
|
||||
KBX v22는 **동일한 immutable artifact를 환경 간 승격**하고, 환경별 차이는 외부 Configuration/Secret으로 주입하는 것을 기본으로 합니다.
|
||||
|
||||
## 기본 승격 순서
|
||||
|
||||
```text
|
||||
Build once
|
||||
↓
|
||||
Static governance / unit / integration / canonical scenarios
|
||||
↓
|
||||
Staging
|
||||
↓ configuration validation
|
||||
↓ migration dry-run + predeploy DbUp
|
||||
↓ smoke / scenario evidence
|
||||
↓
|
||||
Production
|
||||
↓ configuration validation
|
||||
↓ migration dry-run + predeploy DbUp
|
||||
↓ same artifact promotion
|
||||
```
|
||||
|
||||
Production에서 애플리케이션 시작 시 DB Schema를 자동 변경하지 않습니다.
|
||||
|
||||
Secret은 `.env`, `appsettings*.json`, generated manifest에 실제 값을 기록하지 않습니다. `deploy/kbx/*.example`은 key/shape만 보여주는 예제입니다.
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"sourceSha256": "e09186d626b034a524b7cdf78f1e4bb6adbc112975b3baf4fd6194b1c1abd771",
|
||||
"environments": [
|
||||
{
|
||||
"id": "Development",
|
||||
"artifactPromotion": false,
|
||||
"secretSources": [
|
||||
"user-secrets",
|
||||
"environment"
|
||||
],
|
||||
"migrationStrategy": "startup-apply-allowed",
|
||||
"providerNetwork": "opt-in",
|
||||
"requireHttps": false,
|
||||
"providerEndpointOverrideAllowed": true,
|
||||
"requiredGates": [
|
||||
"static-governance"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Test",
|
||||
"artifactPromotion": false,
|
||||
"secretSources": [
|
||||
"environment"
|
||||
],
|
||||
"migrationStrategy": "ephemeral-apply",
|
||||
"providerNetwork": "forbidden",
|
||||
"requireHttps": false,
|
||||
"providerEndpointOverrideAllowed": true,
|
||||
"requiredGates": [
|
||||
"static-governance",
|
||||
"build",
|
||||
"unit",
|
||||
"integration",
|
||||
"scenario"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Staging",
|
||||
"artifactPromotion": true,
|
||||
"secretSources": [
|
||||
"secret-store",
|
||||
"environment"
|
||||
],
|
||||
"migrationStrategy": "predeploy",
|
||||
"providerNetwork": "opt-in",
|
||||
"requireHttps": true,
|
||||
"providerEndpointOverrideAllowed": false,
|
||||
"requiredGates": [
|
||||
"static-governance",
|
||||
"build",
|
||||
"unit",
|
||||
"integration",
|
||||
"scenario",
|
||||
"migration-dry-run"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "Production",
|
||||
"artifactPromotion": true,
|
||||
"secretSources": [
|
||||
"secret-store",
|
||||
"environment"
|
||||
],
|
||||
"migrationStrategy": "predeploy",
|
||||
"providerNetwork": "opt-in",
|
||||
"requireHttps": true,
|
||||
"providerEndpointOverrideAllowed": false,
|
||||
"requiredGates": [
|
||||
"static-governance",
|
||||
"build",
|
||||
"unit",
|
||||
"integration",
|
||||
"scenario",
|
||||
"migration-dry-run",
|
||||
"configuration-validation",
|
||||
"release-governance"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
# Generated Development example. Secret values intentionally blank.
|
||||
KBX__Runtime__Environment=Development
|
||||
KBX__Runtime__ReadOnly=false
|
||||
ConnectionStrings__Main= # secret
|
||||
KBX__Database__MigrationsMode=startup-apply
|
||||
KBX__Database__CommandTimeoutSeconds=30
|
||||
KBX__Hangfire__Enabled=true
|
||||
KBX__Hangfire__WorkerCount=4
|
||||
KBX__SignalR__Enabled=true
|
||||
KBX__Outbox__DispatcherEnabled=true
|
||||
KBX__Inbox__CleanupEnabled=true
|
||||
KBX__Integration__DispatcherEnabled=true
|
||||
KBX__ExternalData__RefreshEnabled=true
|
||||
KBX__ExternalData__ObservationRetentionEnabled=true
|
||||
KBX__Experiments__Enabled=true
|
||||
KBX__Logging__MinimumLevel=Information
|
||||
KBX__Logging__JsonConsoleEnabled=true
|
||||
KBX__Telemetry__Enabled=true
|
||||
KBX__Telemetry__OtlpEndpoint=
|
||||
KBX__Telegram__Enabled=false
|
||||
KBX__Telegram__BotToken= # secret
|
||||
KBX__Telegram__ChatId= # secret
|
||||
ExternalProviders__Krx__Enabled=false
|
||||
ExternalProviders__Krx__AuthKey= # secret
|
||||
ExternalProviders__OpenDart__Enabled=false
|
||||
ExternalProviders__OpenDart__ApiKey= # secret
|
||||
ExternalProviders__Kis__Enabled=false
|
||||
ExternalProviders__Kis__Environment=sandbox
|
||||
ExternalProviders__Kis__AppKey= # secret
|
||||
ExternalProviders__Kis__AppSecret= # secret
|
||||
KBX__Security__RequireHttps=false
|
||||
KBX__Health__ReadinessEnabled=true
|
||||
KBX__Import__MaxUploadBytes=52428800
|
||||
KBX__Import__MaxRows=100000
|
||||
@@ -0,0 +1,34 @@
|
||||
# Generated Production example. Secret values intentionally blank.
|
||||
KBX__Runtime__Environment=Production
|
||||
KBX__Runtime__ReadOnly=false
|
||||
ConnectionStrings__Main= # secret
|
||||
KBX__Database__MigrationsMode=predeploy
|
||||
KBX__Database__CommandTimeoutSeconds=30
|
||||
KBX__Hangfire__Enabled=true
|
||||
KBX__Hangfire__WorkerCount=4
|
||||
KBX__SignalR__Enabled=true
|
||||
KBX__Outbox__DispatcherEnabled=true
|
||||
KBX__Inbox__CleanupEnabled=true
|
||||
KBX__Integration__DispatcherEnabled=true
|
||||
KBX__ExternalData__RefreshEnabled=true
|
||||
KBX__ExternalData__ObservationRetentionEnabled=true
|
||||
KBX__Experiments__Enabled=true
|
||||
KBX__Logging__MinimumLevel=Information
|
||||
KBX__Logging__JsonConsoleEnabled=true
|
||||
KBX__Telemetry__Enabled=true
|
||||
KBX__Telemetry__OtlpEndpoint=
|
||||
KBX__Telegram__Enabled=false
|
||||
KBX__Telegram__BotToken= # secret
|
||||
KBX__Telegram__ChatId= # secret
|
||||
ExternalProviders__Krx__Enabled=false
|
||||
ExternalProviders__Krx__AuthKey= # secret
|
||||
ExternalProviders__OpenDart__Enabled=false
|
||||
ExternalProviders__OpenDart__ApiKey= # secret
|
||||
ExternalProviders__Kis__Enabled=false
|
||||
ExternalProviders__Kis__Environment=production
|
||||
ExternalProviders__Kis__AppKey= # secret
|
||||
ExternalProviders__Kis__AppSecret= # secret
|
||||
KBX__Security__RequireHttps=true
|
||||
KBX__Health__ReadinessEnabled=true
|
||||
KBX__Import__MaxUploadBytes=52428800
|
||||
KBX__Import__MaxRows=100000
|
||||
@@ -0,0 +1,34 @@
|
||||
# Generated Staging example. Secret values intentionally blank.
|
||||
KBX__Runtime__Environment=Staging
|
||||
KBX__Runtime__ReadOnly=false
|
||||
ConnectionStrings__Main= # secret
|
||||
KBX__Database__MigrationsMode=predeploy
|
||||
KBX__Database__CommandTimeoutSeconds=30
|
||||
KBX__Hangfire__Enabled=true
|
||||
KBX__Hangfire__WorkerCount=4
|
||||
KBX__SignalR__Enabled=true
|
||||
KBX__Outbox__DispatcherEnabled=true
|
||||
KBX__Inbox__CleanupEnabled=true
|
||||
KBX__Integration__DispatcherEnabled=true
|
||||
KBX__ExternalData__RefreshEnabled=true
|
||||
KBX__ExternalData__ObservationRetentionEnabled=true
|
||||
KBX__Experiments__Enabled=true
|
||||
KBX__Logging__MinimumLevel=Information
|
||||
KBX__Logging__JsonConsoleEnabled=true
|
||||
KBX__Telemetry__Enabled=true
|
||||
KBX__Telemetry__OtlpEndpoint=
|
||||
KBX__Telegram__Enabled=false
|
||||
KBX__Telegram__BotToken= # secret
|
||||
KBX__Telegram__ChatId= # secret
|
||||
ExternalProviders__Krx__Enabled=false
|
||||
ExternalProviders__Krx__AuthKey= # secret
|
||||
ExternalProviders__OpenDart__Enabled=false
|
||||
ExternalProviders__OpenDart__ApiKey= # secret
|
||||
ExternalProviders__Kis__Enabled=false
|
||||
ExternalProviders__Kis__Environment=sandbox
|
||||
ExternalProviders__Kis__AppKey= # secret
|
||||
ExternalProviders__Kis__AppSecret= # secret
|
||||
KBX__Security__RequireHttps=true
|
||||
KBX__Health__ReadinessEnabled=true
|
||||
KBX__Import__MaxUploadBytes=52428800
|
||||
KBX__Import__MaxRows=100000
|
||||
@@ -0,0 +1,34 @@
|
||||
# Generated Test example. Secret values intentionally blank.
|
||||
KBX__Runtime__Environment=Test
|
||||
KBX__Runtime__ReadOnly=false
|
||||
ConnectionStrings__Main= # secret
|
||||
KBX__Database__MigrationsMode=startup-apply
|
||||
KBX__Database__CommandTimeoutSeconds=30
|
||||
KBX__Hangfire__Enabled=true
|
||||
KBX__Hangfire__WorkerCount=4
|
||||
KBX__SignalR__Enabled=true
|
||||
KBX__Outbox__DispatcherEnabled=true
|
||||
KBX__Inbox__CleanupEnabled=true
|
||||
KBX__Integration__DispatcherEnabled=true
|
||||
KBX__ExternalData__RefreshEnabled=true
|
||||
KBX__ExternalData__ObservationRetentionEnabled=true
|
||||
KBX__Experiments__Enabled=true
|
||||
KBX__Logging__MinimumLevel=Information
|
||||
KBX__Logging__JsonConsoleEnabled=true
|
||||
KBX__Telemetry__Enabled=true
|
||||
KBX__Telemetry__OtlpEndpoint=
|
||||
KBX__Telegram__Enabled=false
|
||||
KBX__Telegram__BotToken= # secret
|
||||
KBX__Telegram__ChatId= # secret
|
||||
ExternalProviders__Krx__Enabled=false
|
||||
ExternalProviders__Krx__AuthKey= # secret
|
||||
ExternalProviders__OpenDart__Enabled=false
|
||||
ExternalProviders__OpenDart__ApiKey= # secret
|
||||
ExternalProviders__Kis__Enabled=false
|
||||
ExternalProviders__Kis__Environment=sandbox
|
||||
ExternalProviders__Kis__AppKey= # secret
|
||||
ExternalProviders__Kis__AppSecret= # secret
|
||||
KBX__Security__RequireHttps=false
|
||||
KBX__Health__ReadinessEnabled=true
|
||||
KBX__Import__MaxUploadBytes=52428800
|
||||
KBX__Import__MaxRows=100000
|
||||
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"Kbx:Runtime:Environment": "Development",
|
||||
"Kbx:Runtime:ReadOnly": false,
|
||||
"Kbx:Database:MigrationsMode": "validate",
|
||||
"Kbx:Database:CommandTimeoutSeconds": 30,
|
||||
"Kbx:Hangfire:Enabled": true,
|
||||
"Kbx:Hangfire:WorkerCount": 4,
|
||||
"Kbx:SignalR:Enabled": true,
|
||||
"Kbx:Outbox:DispatcherEnabled": true,
|
||||
"Kbx:Inbox:CleanupEnabled": true,
|
||||
"Kbx:Integration:DispatcherEnabled": true,
|
||||
"Kbx:ExternalData:RefreshEnabled": true,
|
||||
"Kbx:ExternalData:ObservationRetentionEnabled": true,
|
||||
"Kbx:Experiments:Enabled": true,
|
||||
"Kbx:Logging:MinimumLevel": "Information",
|
||||
"Kbx:Logging:JsonConsoleEnabled": true,
|
||||
"Kbx:Telemetry:Enabled": true,
|
||||
"Kbx:Telegram:Enabled": false,
|
||||
"ExternalProviders:Krx:Enabled": false,
|
||||
"ExternalProviders:OpenDart:Enabled": false,
|
||||
"ExternalProviders:Kis:Enabled": false,
|
||||
"ExternalProviders:Kis:Environment": "sandbox",
|
||||
"Kbx:Security:RequireHttps": true,
|
||||
"Kbx:Health:ReadinessEnabled": true,
|
||||
"Kbx:Import:MaxUploadBytes": 52428800,
|
||||
"Kbx:Import:MaxRows": 100000
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"schemaVersion": "1.0",
|
||||
"configurationSourceSha256": "e09186d626b034a524b7cdf78f1e4bb6adbc112975b3baf4fd6194b1c1abd771",
|
||||
"immutableArtifact": true,
|
||||
"environmentSpecificConfigurationExternal": true,
|
||||
"promotionOrder": [
|
||||
"Staging",
|
||||
"Production"
|
||||
],
|
||||
"requiredEvidence": [
|
||||
"generated/release-impact.json",
|
||||
"generated/configuration-manifest.json",
|
||||
"generated/test-scenario-manifest.json",
|
||||
"generated/api-manifest.json",
|
||||
"migration-dry-run-report",
|
||||
"configuration-validation-report"
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user