# FlubuCore **Repository Path**: dotnetcore/FlubuCore ## Basic Information - **Project Name**: FlubuCore - **Description**: A cross platform build and deployment automation system for building projects and executing deployment scripts using C# code. - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-27 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
English | 中文
# FlubuCore [](http://lucidlynx.comtrade.com:8080/login?from=%2F) [](https://travis-ci.org/dotnetcore/FlubuCore) [](https://www.nuget.org/packages/FlubuCore) [](https://gitter.im/FlubuCore/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://twitter.com/FlubuC) [](https://github.com/dotnetcore) [](https://github.com/dotnetcore/FlubuCore/blob/master/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 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. ```cs 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](https://flubucore.dotnetcore.xyz/tasks/) like e.g. running tests, managing IIS, creating deployment packages, publishing NuGet packages, docker tasks, executing PowerShell scripts and many more. ```cs 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.](https://flubucore.dotnetcore.xyz/buildscript-fundamentals#Custom-code) ```cs context.CreateTarget("MyCustomBuildTarget") .AddTask(x => x.CompileSolutionTask()) .Do(MyCustomMethod) .Do(NuGetPackageReferencingExample); ``` * [assembly references and nuget packages are loaded automatically](https://flubucore.dotnetcore.xyz/buildscript-fundamentals#Referencing-other-assemblies-in-build-script) when script is used together with project file. When script is executed alone (for example when deploying with FlubuCore script on production environment) references can be added with attributes. ```cs [NugetPackage("Newtonsoft.json", "11.0.2")] [Assembly(".\Lib\EntityFramework.dll")] public class BuildScript : DefaultBuildScript { public void NuGetPackageReferencingExample(ITaskContext context) { JsonConvert.SerializeObject("Example"); } } ``` * [Easily run any external program or console command in your script.](https://flubucore.dotnetcore.xyz/buildscript-fundamentals#Run-any-program) ```cs 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")); ``` * [Pass command line arguments, settings from json configuration file or environment variables to your script.](https://flubucore.dotnetcore.xyz/buildscript-fundamentals#Script-arguments) ```cs 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 ``` * [Extending FlubuCore fluent interface by writing your own tasks within FlubuCore plugins.](https://flubucore.dotnetcore.xyz/write-plugins) ```cs public class ExampleFlubuPluginTask : TaskBase