Skip to content
Altbrot Lunatime

Altbrot Lunatime

What is Lunatime?

Altbrot Lunatime is a small Windows desktop app for timing and scoring inline hockey games. It started life as a hobby project back when physical activity was still on the agenda, spent several years gathering dust in a TFS repository, and was eventually rescued, dusted off, and given a proper CI/CD pipeline.

The app is distributed as a ClickOnce application, which means installation is a single click, updates happen automatically in the foreground, and your users never have to wonder which version they’re running.

Tech Stack

LayerChoice
Platform.NET / WinForms
DistributionClickOnce
CI/CDAzure Pipelines
Artifact storageAzure Blob Storage
Version sourceAssemblyInfo.cs

CI/CD Pipeline

The build pipeline takes care of everything from compiling to publishing — no manual release steps required.

Build Pipeline
Azure Pipelines build overview

Key Build Arguments

The MSBuild publish target is driven by a set of arguments wired directly into the pipeline:

/target:publish
/p:ApplicationVersion=$(AssemblyInfo.AssemblyVersion)
/p:PublishURL=https://lunatime.blob.core.windows.net/clickonce/
/p:UpdateEnabled=true
/p:UpdateMode=Foreground
/p:ProductName=Altbrot.Lunatime
  • ApplicationVersion is read automatically from AssemblyInfo.cs by the Assembly Info Reader task — no manual version bumping needed.
  • The publish step outputs the ClickOnce bundle to app.publish/, which a Copy task then pushes to the Azure Blob container.
  • UpdateMode=Foreground ensures users always launch the latest version.

Pipeline Flow

Restore → Build → Publish (ClickOnce) → Copy to Azure Blob

Links

Want to try the app? Head to the repo and hit Start — even without setting up a game first. You might be surprised.
Last updated on