Skip to content

A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.

License

Notifications You must be signed in to change notification settings

zoroz/flubu.core

 
 

FlubuCore

Windows Build Travis NuGet Gitter License

"FlubuCore - Fluent Builder Core" is a cross platform build and deployment automation system. You can define your build and deployment scripts in C# using an intuitive fluent interface. This gives you code completion, IntelliSense, debugging, FlubuCore custom analyzers, and native access to the whole .NET ecosystem inside of your scripts.

FlubuCore in action

Features and Advantages

  • Intuitive an easy to learn. C#, fluent interface, and IntelliSense make even most complex script creation a breeze.

    context.CreateTarget("Example")
      .DependsOn(fetchBuildVersionTarget)
      .AddTask(x => x.CompileSolutionTask())
      .AddTask(x => x.PublishNuGetPackageTask("packageId", "pathToNuspec"))
          .When(c => c.BuildSystems().Jenkins().IsRunningOnJenkins);
    
  • Large number of often used built-in tasks like e.g. running tests, managing IIS, creating deployment packages, publishing NuGet packages, executing PowerShell scripts and many more.

    target
        .AddTask(x => x.CompileSolutionTask())
        .AddTask(x => x.CopyFileTask(source, destination, true))
        .AddTask(x => x.IisTasks()
                        .CreateAppPoolTask("Example app pool")
                        .Mode(CreateApplicationPoolMode.DoNothingIfExists));
    
  • Execute your own custom C# code.

    context.CreateTarget("MyCustomBuildTarget")
         .AddTask(x => x.CompileSolutionTask())
         .Do(MyCustomMethod)
         .Do(NuGetPackageReferencingExample);
    
  • Reference any .NET library, NuGet package or C# source code in your scripts.

    //#ass .\Lib\EntityFramework.dll
    //#nuget Newtonsoft.json, 11.0.2
    public class BuildScript : DefaultBuildScript
    {
       public void NuGetPackageReferencingExample(ITaskContext context)
        {
            JsonConvert.SerializeObject("Example");
        }
    }
    
  • Easily run any external program or console command in your script.

    session.CreateTarget("Run.Libz")
        .AddTask(x => x.RunProgramTask(@"packages\LibZ.Tool\1.2.0\tools\libz.exe")
            .WorkingFolder(@".\src")
            .WithArguments("add")
            .WithArguments("--libz", "Assemblies.libz"));
    
  • Pass command line arguments, settings from json configuration file or enviroment variables to your script.

public class SimpleScript : DefaultBuildScript
{
   [FromArg("sn", "If true app is deployed on second node. Otherwise not.")]
   public bool deployOnSecondNode { get; set; }


    protected override void ConfigureTargets(ITaskContext context)
    {
        context.CreateTarget("compile")
           .AddTask(x => x.CompileSolutionTask()
               .ForMember(y => y.SolutionFileName("someSolution.sln"), "solution", "The solution to build.")); 
    }
 }
 flubu.exe compile -solution=someOtherSolution.sln -sn=true

FlubuCore analyzers in action

Getting Started

Using FlubuCore is straightforward and very simple :-) It is also fully and throughly documented.

The Getting Started chapter on FlubuCore Wiki will help you set up your first FlubuCore build in no time.

A comprehensive list of features that FlubuCore has to offer with descriptions can be found in the Build Script Fundamentals chapter.

Once you have your build and deployment scripts defined, the following Wiki chapters will explain how to run them:

Examples

Aside from the detailed Wiki FlubuCore comes with example projects that reflect real-life situations. The examples can be found in the separate Examples repository.

These examples will help you to get quickly start with FlubuCore:

Have a question?

Join the chat at https://gitter.im/FlubuCore/Lobby

Contributing

Please see CONTRIBUTING.md.

Ways to Contribute

  • Spread the word about the project.
  • Improve documentation.
  • Fix a bug.
  • Implement a new feature.
  • Discuss potential ways to improve project.
  • Improve existing implementation, performance, etc.

Release Notes

Notable FlubuCore changes by release can be found in What's new wiki section. See release notes for full set of changes.

About

A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 99.1%
  • Other 0.9%