
Inside the deploy
Publish to production
SEPTEMBER 03, 2026 · BlackSails team · 6 min read
From dotnet publish to a live URL
ProductA working ASP.NET Core service should not need a second engineering project before it can answer its first production request.
BlackSails turns the build loop .NET developers already know into a release contract: publish locally, upload one immutable artifact, promote it only after the new runtime is healthy, and keep the same public URL for the next release.
The interesting part is not the command. It is everything the command makes predictable.
01
The build starts where the context already is
Your machine already has the SDK, project references, workloads, and build configuration that made the application work. BlackSails uses that environment instead of asking a remote builder to reconstruct it from scratch.
The CLI inspects the project and runs dotnet publish for the supported Linux runtime. What crosses the network is the finished output, not a repository waiting to be interpreted by another build system.
02
One artifact becomes one release
Published output is packaged, verified, and uploaded as an immutable artifact. A release points to that exact artifact, so a retry cannot quietly produce different bytes under the same version.
That boundary keeps the release explainable. The thing that passed local verification is the same thing BlackSails asks the runtime to start.
Inspect
Confirm the project and supported runtime before any upload starts.
Package
Turn the local publish output into a verified, immutable artifact.
Promote
Move traffic only after the new release answers its health checks.
03
The URL outlives the release
Applications have stable identities in BlackSails. New releases update the service behind that identity instead of creating a trail of disposable public addresses.
The result is deliberately ordinary: one HTTPS endpoint for the application, a history of the releases behind it, and a previous healthy version that remains available when a new deployment fails.
A good deployment path makes the distance between a trusted build and a live service short, visible, and repeatable. That is the path BlackSails is building for .NET.