Project Icon

FlubuCore

基于C#的跨平台构建和部署自动化系统

FlubuCore是一个基于C#的跨平台构建和部署自动化系统。它允许开发人员使用流畅接口定义脚本,提供代码补全、智能感知和调试功能,并支持在脚本中访问.NET生态系统。FlubuCore内置大量常用任务,支持自定义代码执行和自动加载程序集,为开发者提供了直观易用的自动化工具。

英文 | 中文

FlubuCore

构建状态 NuGet 徽章 Gitter .NET Foundation 成员项目 .NET Core Community 成员项目 许可证

简介

"FlubuCore - Fluent Builder Core"是一个跨平台的构建和部署自动化系统。您可以使用直观的流畅接口在C#中定义构建和部署脚本。这为您的脚本提供了代码补全、智能感知、调试、FlubuCore自定义分析器,以及在脚本中直接访问整个.NET生态系统的能力。

FlubuCore运行中

FlubuCore提供了一个.NET(Core)控制台应用程序,使用Roslyn的强大功能来编译和执行脚本。上面的示例可以通过以下方式在控制台中运行:

  • FlubuCore运行器(.NET 4.62+) flubu.exe Default
  • FlubuCore dotnet CLI工具(.NET Core 1.0+) dotnet flubu Default
  • FlubuCore本地或全局工具(.NET Core 2.1+) flubu Default

特性和优势

  • 直观易学。C#、流畅接口和智能感知使得即使是最复杂的脚本创建也变得轻而易举。
    [FromArg("nugetKey", "用于发布Flubu nuget包的Nuget API密钥。")]
    public string NugetApiKey { get; set; }

    protected override void ConfigureTargets(ITaskContext context)
    {
        var pack = context.CreateTarget("Pack")
            .SetDescription("准备nuget包。")
            .AddCoreTask(x => x.Pack()
                .NoBuild()
                .OutputDirectory(OutputDirectory)
                .WithArguments("--force")); //你可以在每个任务上添加自己的自定义参数

        var branch = context.BuildSystems().Travis().Branch;
       
        var nugetPush = context.CreateTarget("Nuget.publish")
            .SetDescription("发布nuget包。")
            .DependsOn(pack)
            .AddCoreTask(x => x.NugetPush($"{OutputDirectory}/NetCoreOpenSource.nupkg")
                .ServerUrl("https://www.nuget.org/api/v2/package")
                .ApiKey(NugetApiKey)
            )
            .When(c => c.BuildSystems().RunningOn == BuildSystemType.TravisCI
                        && !string.IsNullOrEmpty(branch)
                        && branch.EndsWith("stable", StringComparison.OrdinalIgnoreCase));
    }
  • 大量常用的内置任务,如版本控制、运行测试、创建部署包、发布NuGet包、Docker任务、Git任务、SQL任务、npm任务、执行PowerShell、管理IIS脚本等等。
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("DoExample")
        .Do(c =>
        {
            // 编写你的精彩代码。
            File.Copy("NotSoAwesome.txt", Path.Combine(OutputDirectory, "JustAnExample.txt") );
            // 如果需要,在DO中访问flubu内置任务。
            c.Tasks().GenerateT4Template("example.TT").Execute(c);                
        })
        .AddTask(x => x.CompileSolutionTask())
        .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("c", "用于构建项目的配置。")]
   public string Configuration { get; set; } = "Release"
 
   [FromArg("sn", "如果为true,则应用程序部署在第二个节点上。否则不部署。")]
   public bool deployOnSecondNode { get; set; }

   protected override void ConfigureTargets(ITaskContext context)
   {
        context.CreateTarget("build")
           .AddCoreTask(x => x.Build()
               .Configuration(Configuration)
               .ForMember(x =>  x.Framework("net462"), "f", "要构建的目标框架。")); 
   }
}
 flubu build -c=Debug -f=netcoreapp2.0

FlubuCore交互模式

FlubuCore分析器运行中

入门

使用FlubuCore非常简单直观 :-) 它也有完整和详细的文档。

FlubuCore文档中的入门章节将帮助你快速设置第一个FlubuCore构建。 你也应该查看入门博客。它有一些更详细的内容,包含一些不错的技巧和窍门。 FlubuCore提供的功能完整列表及描述可以在构建脚本基础章节中找到。

一旦定义好构建和部署脚本,以下Wiki章节将解释如何运行它们:

示例

除了详细的Wiki,FlubuCore还提供了反映真实情况的示例项目。这些示例可以在单独的示例仓库中找到。

以下示例将帮助你快速入门FlubuCore:

  • .NET Framework构建示例 - 该示例涵盖了版本控制、项目构建、运行测试、打包应用程序以及其他一些基本用例。

  • .NET Core构建示例 - 该示例涵盖了版本控制、项目构建、运行测试、打包应用程序以及其他一些基本用例。

  • 部署脚本示例 - 该示例展示了如何编写简单的部署脚本。

  • 开源库示例 - 该示例涵盖了版本控制、项目构建、运行测试和发布NuGet包。它还涵盖了如何在Appveyor和Travis CI上运行构建脚本。

有问题吗?

加入Gitter聊天

贡献

请查看CONTRIBUTING.md

贡献方式

  • 我们非常感谢您提供的任何反馈!欢迎参与聊天或在问题跟踪器中添加问题。
  • 宣传项目。
  • 如果您喜欢这个项目,别忘了给它一个星星,这样社区就会变得更大。
  • 改进文档。
  • 报告、修复bug。
  • 实现新功能。
  • 讨论改进项目的潜在方法。
  • 改进现有实现、性能等。

更新日志和路线图

带有描述和示例的更改可以在更新日志中找到。

您可以通过查看已打开的里程碑来了解FlubuCore的路线图。

进一步发展

如果您发现FlubuCore有用(您觉得它在日常工作中对您有帮助),您可以通过给我们买杯咖啡来支持进一步的开发(或成为赞助者或赞助商)。有时熬夜到深夜实现新功能很困难,咖啡可以帮助我们。我们非常感谢您的支持。赞助资金也将用于项目的推广。如果您是赞助者或赞助商,您还可以请求新功能或寻求支持。这些问题将被优先处理。

赞助者和赞助商

OpenCollective OpenCollective

使用与支持

感谢Comtrade对我们的支持。

FlubuCore分析器实际应用

致谢

  • 特别感谢@ironcev大大改进了自述文件并提供了一些宝贵的建议。
  • 特别感谢@alexinea将整个文档翻译成中文。
  • 特别感谢@huanlin用繁体中文撰写有关FlubuCore的博客并将其翻译成英文。

行为准则

本项目采用了贡献者公约定义的行为准则,以明确我们社区中的预期行为。 有关更多信息,请参阅.NET Foundation行为准则

.NET Foundation

本项目得到了.NET Foundation的支持。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号