1 Star 0 Fork 0

unlonlyness / dotnetclub

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.cake 5.41 KB
一键复制 编辑 原始数据 按行查看 历史
#addin nuget:?package=Cake.DoInDirectory
#addin "Cake.Npm"
var target = Argument("target", "Default");
var imagetag = Argument("imagetag", string.Empty);
// ./build.sh --target=build-all
// Available methods: https://github.com/cake-build/cake/blob/develop/src/Cake.Core/Scripting/ScriptHost.cs
Task("Default")
.Does(() =>
{
Information("Please specify a target to run:");
Information("-------------------------------");
foreach(var task in Tasks){
Information($"{task.Name}\t\t\t\t{task.Description}");
}
});
Task("clean")
.Does(() =>{
var directoriesToDelete = new DirectoryPath[]{
Directory("./src/Discussion.Web/publish"),
Directory("./src/Discussion.Web/wwwroot/dist"),
Directory("./src/Discussion.Admin/ClientApp/dist")
}.Where(DirectoryExists).ToArray();
DeleteDirectories(directoriesToDelete, new DeleteDirectorySettings {
Recursive = true,
Force = true
});
DotNetCoreClean("./dotnetclub.sln");
});
Task("build")
.Does(() =>
{
DoInDirectory("./src/Discussion.Web/", () =>
{
Execute("dotnet build");
});
DoInDirectory("./src/Discussion.Web/wwwroot", () =>
{
Execute("yarn install");
});
DoInDirectory("./src/Discussion.Web/wwwroot/lib", () =>
{
Execute("yarn install");
});
DoInDirectory("./src/Discussion.Web/wwwroot", () =>
{
Execute("npm run dev");
Execute("npm run prod");
});
DoInDirectory("./src/Discussion.Admin/", () =>
{
Execute("dotnet build");
});
DoInDirectory("./src/Discussion.Admin/ClientApp", () =>
{
Execute("yarn install");
Execute("npm run build");
});
});
Task("test")
.Does((context) =>
{
var isLinux = context.Environment.Platform.Family == Cake.Core.PlatformFamily.Linux;
var isCI = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TRAVIS"));
DoInDirectory("./test/Discussion.Web.Tests/", () =>
{
if(isLinux && isCI){
Execute("dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude=\\\"[*]Discussion.Tests.Common.*\\\"");
}else{
DotNetCoreTest();
}
});
DoInDirectory("./test/Discussion.Admin.Tests/", () =>
{
if(isLinux && isCI){
Execute("dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:Exclude=\\\"[*]Discussion.Tests.Common.*\\\"");
}else{
DotNetCoreTest();
}
});
DoInDirectory("./src/Discussion.Admin/ClientApp", () =>
{
Execute("npm run test-coverage");
});
});
Task("package")
.WithCriteria(() => !IsRunningOnWindows())
.Does((context) =>
{
DoInDirectory("./src/Discussion.Web/", () =>
{
Execute("dotnet publish -c Release -o publish");
});
DoInDirectory("./src/Discussion.Admin/", () =>
{
Execute("dotnet publish -c Release -o publish");
});
var isMac = context.Environment.Platform.Family == Cake.Core.PlatformFamily.OSX;
var isCI = !string.IsNullOrEmpty(Environment.GetEnvironmentVariable("TRAVIS"));
var skipDocker = isCI && isMac;
if(!skipDocker){
if(string.IsNullOrWhiteSpace(imagetag)){
var now = DateTime.UtcNow.ToString("yyyyMMddHHmm");
imagetag = $"jijiechen/dotnetclub:{now}";
}
CopyFile("./DockerFile", "./src/Discussion.Web/publish/DockerFile");
CopyFile("src/Discussion.Migrations/bin/Release/netcoreapp2.1/Discussion.Migrations.deps.json", "./src/Discussion.Web/publish/Discussion.Migrations.deps.json");
CopyFile("src/Discussion.Migrations/bin/Release/netcoreapp2.1/Discussion.Migrations.runtimeconfig.json", "./src/Discussion.Web/publish/Discussion.Migrations.runtimeconfig.json");
Execute($"docker build ./src/Discussion.Web/publish -t {imagetag} -f ./src/Discussion.Web/publish/DockerFile");
}
});
Task("ci")
.IsDependentOn("clean")
.IsDependentOn("build")
.IsDependentOn("test")
.IsDependentOn("package");
void Execute(string command, string workingDir = null){
if (string.IsNullOrEmpty(workingDir))
workingDir = System.IO.Directory.GetCurrentDirectory();
System.Diagnostics.ProcessStartInfo processStartInfo;
if (IsRunningOnWindows())
{
processStartInfo = new System.Diagnostics.ProcessStartInfo
{
UseShellExecute = false,
WorkingDirectory = workingDir,
FileName = "cmd",
Arguments = "/C \"" + command + "\"",
};
}
else
{
processStartInfo = new System.Diagnostics.ProcessStartInfo
{
UseShellExecute = false,
WorkingDirectory = workingDir,
FileName = "bash",
Arguments = "-c \"" + command + "\"",
};
}
using (var process = System.Diagnostics.Process.Start(processStartInfo))
{
process.WaitForExit();
if (process.ExitCode != 0)
throw new Exception(string.Format("Exit code {0} from {1}", process.ExitCode, command));
}
}
RunTarget(target);
CSS
1
https://gitee.com/unlonlyness/dotnetclub.git
git@gitee.com:unlonlyness/dotnetclub.git
unlonlyness
dotnetclub
dotnetclub
master

搜索帮助