Skip to content

Add deploy a windows service

Placeholder MINDY.L requested to merge feature/deploy-windows-service into main

Summary
Branch: feature/deploy-windows-service
Add first-class Squid.DeployWindowsService support for Windows Tentacle targets.

This PR adds the Windows service deploy action handler, embedded PowerShell payload, script builder, and package-reference bridge for Halibut direct script execution.
The new action supports Tentacle Polling and Tentacle Listening transports, requires Windows + PowerShell capabilities, and rejects known non-Windows Tentacle targets with an actionable error.
The deployment script can create or reconfigure a Windows service, set display name/description/start mode/dependencies/account args, resolve package content from package-references.json, and start or stop the service based on DesiredStatus.
Coverage was added across unit, integration, contract E2E, and Windows real-host E2E layers.

Review found 2 blocking issues to fix before merge:

  1. Existing services are stopped after package purge/extract, which can fail when service files are locked.
  2. Action-level package references with empty PackageReferenceName are filtered out, so standard selected packages may not be uploaded.

Test plan
Diff hygiene:
git diff main...HEAD --check
Result: passed.

Focused unit coverage:
dotnet test tests/Squid.UnitTests/Squid.UnitTests.csproj --no-restore --filter "FullyQualifiedName~WindowsServiceDeploy|FullyQualifiedName~WindowsServiceActionRegistration|FullyQualifiedName~ExecuteStepsPhasePackageReferences|FullyQualifiedName~PackageAcquisitionInjector"
Result: 57 passed, 0 failed.

Note: first sandboxed run failed on MSBuild named-pipe permissions; rerun with elevated execution succeeded. Windows real-host E2E was not run in this local macOS review environment.

Merge request reports

Loading