OneBuild

OneBuild - Convention based PowerShell build for .NET

View OneBuild on GitHub lholman/OneBuild

Getting started

OneBuild is a modular set of convention based .NET solution build scripts written in PowerShell, relying on Invoke-Build for task automation. See https://github.com/lholman/OneBuild for more details.

Build status

Building with OneBuild

OneBuild is shipped as a solution NuGet package, use it to build your solution by installing the NuGet package..

PS>Install-Package OneBuild

Then simply run..

C:\>cd "Path to your solution"
C:\Path to your solution\>OneBuild.bat

NuGet installs OneBuild and its dependencies in your $SolutionDir\Packages folder, copying the OneBuild.bat bootstrap script to the root of the $SolutionDir

How OneBuild works

OneBuild is a modular set of .NET solution build scripts written in PowerShell. Following the proven Deployment Pipeline approach to software build and delivery, OneBuild makes the Commit phase (versioning, compilation, unit testing and packaging of binaries) of a Deployment Pipeline a repeatable, deterministic and simple exercise. Being convention based and therefore requiring no configuration allows OneBuild to build any target .NET solution out of the box, assuming the solution follows some basic convention patterns. OneBuild is proud to rely on Invoke-Build for task automation.

Options

Using standard Powershell and Invoke-Build script parameters you can pass in values for the following.

The build pipeline and convention

Much of the logic within each phase of the build pipeline relies heavily on convention, thus no configuration. Adhere to the documented convention and OneBuild should just work.

Note: The OneBuild OneBuild.bat bootstrap script and Invoke-Build OneBuild.build.ps1 build script must sit alongside the Visual Studio solution file(s) you intend to build. If you install with NuGet these are copied for you when executing PM> Install-Package Nunit

Early assumptions

Why OneBuild?

There are a number of benefits of having a build process that can be run in its entirety on a local (developers) machine. I've written more about this before, but here's a summary.