Popularity
4.7
Growing
Activity
9.6
Growing
399
31
57

Description

Flubu is A C# library for building projects and executing deployment scripts using C# code.

Flubu main features :

- Net Core support - Easy to learn and to use because you write build script entirely in C#. - Quite a lot of built in tasks (compile, running tests, managing iis, creating deploy - package, publishing nuget packages, executing powershell scripts...)- - Write your own custom c# code in script and execute it. - Run any external program in script. - Reference any .net library or c# source code file in buildscript. - Fluent interface and intelisense. - Write tests, debug your build script. - Use flubu tasks in any other application. - Web api is available for flubu. Useful for automated deployments remotely. - Write your own flubu tasks and extend flubu fluent interface with them.

Programming language: C#
Tags: Build     Build Automation     Script    
Latest version: v4.2.1

FlubuCore alternatives and similar packages

Based on the "Build Automation" category

Do you think we are missing an alternative of FlubuCore or a related project?

Add another 'Build Automation' Package

README

English |
中文

FlubuCore

Travis NuGet Badge Gitter Twitter Member project of .NET Core Community 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

FlubuCore offers a .net (core) console application that uses power of roslyn to compile and execute scripts. Above example can be run from console with:

  • FlubuCore runner flubu.exe Default
  • FlubuCore dotnet cli tool dotnet flubu Default
  • FlubuCore global tool flubu Default

    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);
context.CreateTarget("build")
   .AddTask(x => x.GitVersionTask())
   .AddTask(x => x.CompileSolutionTask("MySolution.sln").BuildConfiguration("Release");

context.CreateTarget("run.tests")
   .AddTask(x => x.XunitTaskByProjectName("MyProject").StopOnFail())
   .AddTask(x => x.NUnitTask(NunitCmdOptions.V3, "MyProject2").ExcludeCategory("Linux"))
   .AddCoreTask(x => x.CoverletTask("MyProject.dll"));
context.CreateTarget("MyCustomBuildTarget")
     .AddTask(x => x.CompileSolutionTask())
     .Do(MyCustomMethod)
     .Do(NuGetPackageReferencingExample);
[NugetPackage("Newtonsoft.json", "11.0.2")]
[Assembly(".\Lib\EntityFramework.dll")]
public class BuildScript : DefaultBuildScript
{
   public void NuGetPackageReferencingExample(ITaskContext context)
    {
        JsonConvert.SerializeObject("Example");
    }
}
context.CreateTarget("Run.Libz")
    .AddTask(x => x.RunProgramTask(@"packages\LibZ.Tool\1.2.0\tools\libz.exe")
        .WorkingFolder(@".\src")
        .WithArguments("add")
        .WithArguments("--libz", "Assemblies.libz"));
 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
  context.CreateTarget("Example")`
      .AddCoreTask(x => x.Build("MySolution.sln").Configuration("Release"); 

flubu example --configuration=Debug

flubu would execute dotnet build MySolution.sln --configuration Debug

  • Full .NET Core support including the global CLI tool

    dotnet tool install --global FlubuCore.GlobalTool
    flubu compile
    
  • FlubuCore interactive mode which offers target tab completition, options tab completition, toogle targets/options, executed commands history. It is also possible to execute external commands and operable programs. For some of them FlubuCore offers tab completion with help displayed at the bottom of console out of the box(such as dotnet, git..)

FlubuCore interactive mode

FlubuCore analyzers in action

Getting Started

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

The Getting Started chapter in FlubuCore Documentation 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](./CONTRIBUTING.md).

Ways to Contribute

  • Spread the word about the project.
  • If you like the project don't forget to give it a star so that the community get's bigger.
  • Improve documentation.
  • Report, fix a bug.
  • Implement a new feature.
  • Discuss potential ways to improve project.
  • Improve existing implementation, performance, etc.

Changelog and Roadmap

Changes with description and examples can be found in Changelog

You can see FlubuCore roadmap by exploring opened Milestones.

Used & Powered by

Thank's to Comtrade for supporting us.

FlubuCore analyzers in action

Acknowledgements

  • Special thanks to @ironcev for greatly improving readme and for giving some valuable advices.
  • Special thanks to @alexinea for translating whole documentation to Chinese.


*Note that all licence references and agreements mentioned in the FlubuCore README section above are relevant to that project's source code only.