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
| Layer | Choice |
|---|---|
| Platform | .NET / WinForms |
| Distribution | ClickOnce |
| CI/CD | Azure Pipelines |
| Artifact storage | Azure Blob Storage |
| Version source | AssemblyInfo.cs |
CI/CD Pipeline
The build pipeline takes care of everything from compiling to publishing — no manual release steps required.

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.LunatimeApplicationVersionis read automatically fromAssemblyInfo.csby 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=Foregroundensures users always launch the latest version.
Pipeline Flow
Restore → Build → Publish (ClickOnce) → Copy to Azure BlobLinks
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