01
项目简介
02
主要特性
1、基于 C# 的 DSL:使用 C# 编写构建脚本,支持完整的 C# 语言特性。
2、跨平台支持:可在 Windows、Linux 和 macOS 上运行。
3、丰富的工具集成:支持 MSBuild、dotnet CLI、NuGet、NUnit、xUnit、MSTest 等。
4:、支持 Docker、Azure、AWS 等云服务
5、与 CI/CD 系统集成:支持 Azure DevOps、Jenkins、GitHub Actions 等。
03
简单示例
// 获取命令行参数"target",如果没有提供则默认为"Test"
// 运行时可指定:--target=Clean 或其他任务名
var target = Argument("target", "Test");
// 获取命令行参数"configuration",如果没有提供则默认为"Release"
// 运行时可指定:--configuration=Debug
var configuration = Argument("configuration", "Release");
//////////////////////////////////////////////////////////////////////
// TASKS - 定义构建任务
//////////////////////////////////////////////////////////////////////
// 定义名为"Clean"的任务
Task("Clean")
// 设置执行条件:只有当命令行有"rebuild"参数时才执行
// 运行时可指定:--rebuild
.WithCriteria(c => HasArgument("rebuild"))
.Does(() =>
{
// 清除指定配置的输出目录
CleanDirectory($"./src/Example/bin/{configuration}");
});
// 定义名为"Build"的任务
Task("Build")
// 设置任务依赖:执行Build前必须先执行Clean任务
.IsDependentOn("Clean")
.Does(() =>
{
// 使用DotNetBuild命令构建解决方案
DotNetBuild("./src/Example.sln", new DotNetBuildSettings
{
Configuration = configuration, // 使用指定的配置(Release/Debug)
});
});
// 定义名为"Test"的任务
Task("Test")
// 设置任务依赖:执行Test前必须先执行Build任务
.IsDependentOn("Build")
.Does(() =>
{
// 使用DotNetTest命令运行测试
DotNetTest("./src/Example.sln", new DotNetTestSettings
{
Configuration = configuration, // 使用指定的配置
NoBuild = true, // 不重新构建,因为Build任务已经完成了构建
});
});
//////////////////////////////////////////////////////////////////////
// EXECUTION - 执行目标任务
//////////////////////////////////////////////////////////////////////
// 运行指定的目标任务(默认为Test)
// 这将按依赖关系依次执行:Clean(如果有rebuild参数)->Build->Test
RunTarget(target);
04
项目地址
https://github.com/cake-build/cake