代码拉取完成,页面将自动刷新
// Usings
using System.Xml;
using System.Xml.Linq;
using System.Xml.XPath;
// Arguments
var target = Argument<string>("target", "Default");
var source = Argument<string>("source", null);
var apiKey = Argument<string>("apikey", null);
var releaseNote = ParseReleaseNotes("./RELEASE_NOTES.md");
var buildNumber = EnvironmentVariable("BUILD_NUMBER") ?? "0";
var version = Argument<string>("targetversion", $"{releaseNote.Version}.{buildNumber}-beta");
var skipClean = Argument<bool>("skipclean", false);
var skipTests = Argument<bool>("skiptests", false);
var nogit = Argument<bool>("nogit", false);
var config = Argument<string>("configuration", "Release");
// Variables
var configuration = IsRunningOnWindows() ? config : "MonoRelease";
var csProjectFiles = GetFiles("./src/**/*.csproj");
// Directories
var nuget = Directory("tools");
var output = Directory("build");
var outputBinaries = output + Directory("binaries");
var outputBinariesNet = outputBinaries + Directory("net472");
var outputBinariesNetStandard = outputBinaries + Directory("netstandard2.0");
var outputBinariesNet5 = outputBinaries + Directory("net5.0");
var outputBinariesNet6 = outputBinaries + Directory("net6.0");
var outputPackages = output + Directory("packages");
var outputNuGet = output + Directory("nuget");
var outputPerfResults = Directory("perfResults");
///////////////////////////////////////////////////////////////
Task("Clean")
.Does(() =>
{
// Clean artifact directories.
CleanDirectories(new DirectoryPath[] {
output, outputBinaries, outputPackages, outputNuGet,
outputBinariesNet, outputBinariesNetStandard,
outputBinariesNet5, outputBinariesNet6
});
if(!skipClean) {
// Clean output directories.
CleanDirectories("./**/bin/" + configuration);
CleanDirectories("./**/obj/" + configuration);
}
});
Task("Restore-NuGet-Packages")
.Description("Restores dependencies")
.Does(() =>
{
DotNetCoreRestore();
int result = StartProcess("dotnet", new ProcessSettings { Arguments = "restore -r win-x64" } );
if (result != 0)
{
throw new CakeException($"Restore failed.");
}
});
Task("Compile")
.Description("Builds the solution")
.IsDependentOn("Clean")
.IsDependentOn("Restore-NuGet-Packages")
.Does(() =>
{
int result = StartProcess("dotnet", new ProcessSettings { Arguments = "msbuild DotNetty.sln /p:Configuration=" + configuration } );
if (result != 0)
{
throw new CakeException($"Compilation failed.");
}
});
Task("Test")
.Description("Executes xUnit tests")
.WithCriteria(!skipTests)
.IsDependentOn("Compile")
.Does(() =>
{
var projects = GetFiles("./test/**/*.csproj")
- GetFiles("./test/**/*.Microbench.csproj")
- GetFiles("./test/**/*.Performance.csproj");
foreach(var project in projects)
{
DotNetCoreTest(project.FullPath, new DotNetCoreTestSettings
{
Configuration = configuration//,
//Verbose = false
});
// if (IsRunningOnWindows())
// {
// DotNetCoreTest(project.GetDirectory().FullPath, new DotNetCoreTestSettings {
// Configuration = configuration
// });
// }
// else
// {
// // For when test projects are set to run against netstandard
// // DotNetCoreTest(project.GetDirectory().FullPath, new DotNetCoreTestSettings {
// // Configuration = configuration,
// // Framework = "netstandard1.3",
// // Runtime = "unix-64"
// // });
// var dirPath = project.GetDirectory().FullPath;
// var testFile = project.GetFilenameWithoutExtension();
// using(var process = StartAndReturnProcess("mono", new ProcessSettings{Arguments =
// dirPath + "/bin/" + configuration + "/net451/unix-x64/dotnet-test-xunit.exe" + " " +
// dirPath + "/bin/" + configuration + "/net451/unix-x64/" + testFile + ".dll"}))
// {
// process.WaitForExit();
// if (process.GetExitCode() != 0)
// {
// throw new Exception("Mono tests failed");
// }
// }
// }
}
});
Task("Package-NuGet")
.Description("Generates NuGet packages for each project that contains a nuspec")
.Does(() =>
{
var settings = new DotNetCorePackSettings {
Configuration = configuration,
OutputDirectory = outputNuGet,
ArgumentCustomization = args => args.Append("--include-symbols").Append("-s").Append("--no-build")
};
foreach(var project in csProjectFiles)
{
DotNetCorePack(project.GetDirectory().FullPath, settings);
}
});
Task("Publish-NuGet")
.Description("Pushes the nuget packages in the nuget folder to a NuGet source. Also publishes the packages into the feeds.")
.Does(() =>
{
// Make sure we have an API key.
if(string.IsNullOrWhiteSpace(apiKey)){
throw new CakeException("No NuGet API key provided.");
}
// Upload every package to the provided NuGet source (defaults to nuget.org).
var packages = GetFiles(outputNuGet.Path.FullPath + "/*" + version + ".nupkg");
foreach(var package in packages)
{
NuGetPush(package, new NuGetPushSettings {
ToolPath = "tools/nuget.exe",
Source = source,
ApiKey = apiKey,
Verbosity = NuGetVerbosity.Detailed
});
}
});
///////////////////////////////////////////////////////////////
Task("Benchmark")
.Description("Runs benchmarks")
.IsDependentOn("Compile")
.Does(() =>
{
StartProcess(nuget.ToString() + "/nuget.exe", "install NBench.Runner -OutputDirectory tools -ExcludeVersion -Version 1.0.0");
var libraries = GetFiles("./test/**/bin/" + configuration + "/net472/*.Performance.dll");
CreateDirectory(outputPerfResults);
foreach (var lib in libraries)
{
Information("Using NBench.Runner: {0}", lib);
// Make sure libuv.dll exists in performance test folder
CopyFiles("./test/DotNetty.Transport.Libuv.Tests/bin/" + configuration + "/net472/win-x64/libuv.dll", lib.GetDirectory(), false);
CopyFiles("./tools/NBench.Runner*/**/NBench.Runner.exe", lib.GetDirectory(), false);
var nbenchArgs = new StringBuilder()
.Append(" " + lib)
.Append($" output-directory=\"{outputPerfResults}\"")
.Append(" concurrent=\"true\"");
int result = StartProcess(lib.GetDirectory().FullPath + "\\NBench.Runner.exe", new ProcessSettings { Arguments = nbenchArgs.ToString(), WorkingDirectory = lib.GetDirectory() });
if (result != 0)
{
throw new CakeException($"NBench.Runner failed. {nbenchArgs}");
}
}
});
///////////////////////////////////////////////////////////////
Task("Tag")
.Description("Tags the current release.")
.Does(() =>
{
StartProcess("git", new ProcessSettings {
Arguments = string.Format("tag \"v{0}\"", version)
});
});
Task("Prepare-Release")
.Does(() =>
{
// Update version.
UpdateCsProjectVersion(version, csProjectFiles);
// Add
foreach (var file in csProjectFiles)
{
if (nogit)
{
Information("git " + string.Format("add {0}", file.FullPath));
}
else
{
StartProcess("git", new ProcessSettings {
Arguments = string.Format("add {0}", file.FullPath)
});
}
}
// Commit
if (nogit)
{
Information("git " + string.Format("commit -m \"Updated version to {0}\"", version));
}
else
{
StartProcess("git", new ProcessSettings {
Arguments = string.Format("commit -m \"Updated version to {0}\"", version)
});
}
// Tag
if (nogit)
{
Information("git " + string.Format("tag \"v{0}\"", version));
}
else
{
StartProcess("git", new ProcessSettings {
Arguments = string.Format("tag \"v{0}\"", version)
});
}
//Push
if (nogit)
{
Information("git push origin master");
Information("git push --tags");
}
else
{
StartProcess("git", new ProcessSettings {
Arguments = "push origin master"
});
StartProcess("git", new ProcessSettings {
Arguments = "push --tags"
});
}
});
Task("Update-Version")
.Does(() =>
{
if(string.IsNullOrWhiteSpace(version)) {
throw new CakeException("No version specified!");
}
CreateAssemblyInfo("src/shared/SharedAssemblyInfo.cs", new AssemblyInfoSettings {
Product = "DotNetty",
Company = "Microsoft",
Version = version,
FileVersion = version,
Copyright = string.Format("(c) Microsoft 2015 - {0}", DateTime.Now.Year)
});
UpdateCsProjectVersion(version, csProjectFiles);
});
///////////////////////////////////////////////////////////////
public void UpdateCsProjectVersion(string version, FilePathCollection filePaths)
{
Verbose(logAction => logAction("Setting version to {0}", version));
foreach (var file in filePaths)
{
XmlPoke(file, "//PropertyGroup/VersionPrefix", version);
}
}
Task("Default")
.IsDependentOn("Test")
//.IsDependentOn("Update-Version")
.IsDependentOn("Package-NuGet");
Task("Mono")
.IsDependentOn("Test");
Task("PR")
//.IsDependentOn("Update-Version")
.IsDependentOn("Test")
//.IsDependentOn("Benchmark")
.IsDependentOn("Package-NuGet");
Task("Nightly")
.IsDependentOn("Update-Version")
.IsDependentOn("Compile")
.IsDependentOn("Package-NuGet");
///////////////////////////////////////////////////////////////
RunTarget(target);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。