Make deployment kill-timeout configurable via env var
Summary
- The 60-minute deployment kill-timer in
DeploymentPipelineRunnerwas a hardcodedinternal initconstant with no operator override — any deployment legitimately exceeding 60 minutes (large DB migrations, multi-stage rollouts) was force-cancelled with no escape hatch. - Add
SQUID_DEPLOYMENT_TIMEOUT_MINUTESfollowing the establishedHalibutPollingWorkAdmission.ParseMaxPendingWorkPerAgentpattern: a pure static parser (ParseDeploymentTimeout) with a safe fallback to the 60-minute default on blank / invalid / non-positive input, plus a thin env reader wired into the property's default initializer. -
Non-breaking: constructor signature unchanged; only additive
public const/internal const/public staticmembers. With the variable unset the effective timeout is byte-identical to the previous 60-minute behaviour.
Test plan
-
Unit: env-var name pinned (Rule 8) + default-minutes pinned -
Unit: 11-case [Theory]overParseDeploymentTimeout(null / empty / whitespace / valid / surrounding-whitespace / large / equal-to-default / garbage / decimal / zero / negative) -
Unit: env-set drives effective DeploymentTimeout; env-unset falls back to 60 min (env saved/restored, isolation-safe distinct value) -
Regression: full Services.Deploymentsnamespace 3981/3981 green; all 4DeploymentPipelineRunner*test classes 42/42 green -
dotnet build src/Squid.Core— 0 errors