1 Star 0 Fork 0

ElvexGame/litjson

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
build.cake 7.84 KB
一键复制 编辑 原始数据 按行查看 历史
// Install modules
#module nuget:?package=Cake.DotNetTool.Module&version=0.3.0
// Install tools
#tool nuget:?package=NUnit.ConsoleRunner&version=3.4.0
// Install .NET Core Global tools.
#tool "dotnet:https://api.nuget.org/v3/index.json?package=GitVersion.Tool&version=5.0.1"
///////////////////////////////////////////////////////////////////////////////
// ARGUMENTS
///////////////////////////////////////////////////////////////////////////////
var target = Argument("target", "Default");
var configuration = Argument("configuration", "Release");
//////////////////////////////////////////////////////////////////////
// PARAMETERS
//////////////////////////////////////////////////////////////////////
DotNetCoreMSBuildSettings msBuildSettings = null;
string version = null,
semVersion = null,
milestone = null;
FilePath litjsonProjectPath = "./src/LitJson/LitJSON.csproj";
///////////////////////////////////////////////////////////////////////////////
// SETUP / TEARDOWN
///////////////////////////////////////////////////////////////////////////////
Setup(ctx =>
{
Information("Calculating Semantic Version");
if (!BuildSystem.IsLocalBuild)
{
GitVersion(new GitVersionSettings{
OutputType = GitVersionOutput.BuildServer
});
}
CopyFile("./src/LitJson/AssemblyInfo.cs.in", "./src/LitJson/AssemblyInfo.cs");
GitVersion assertedVersions = GitVersion(new GitVersionSettings
{
UpdateAssemblyInfoFilePath = "./src/LitJson/AssemblyInfo.cs",
UpdateAssemblyInfo = true,
OutputType = GitVersionOutput.Json,
});
version = assertedVersions.MajorMinorPatch;
semVersion = assertedVersions.LegacySemVerPadded;
milestone = string.Concat("v", version);
Information("Calculated Semantic Version: {0}", semVersion);
msBuildSettings = new DotNetCoreMSBuildSettings()
.WithProperty("Version", semVersion)
.WithProperty("AssemblyVersion", version)
.WithProperty("FileVersion", version);
if(!IsRunningOnWindows())
{
var frameworkPathOverride = ctx.Environment.Runtime.IsCoreClr
? new []{
new DirectoryPath("/Library/Frameworks/Mono.framework/Versions/Current/lib/mono"),
new DirectoryPath("/usr/lib/mono"),
new DirectoryPath("/usr/local/lib/mono")
}
.Select(directory =>directory.Combine("4.5"))
.FirstOrDefault(directory => ctx.DirectoryExists(directory))
?.FullPath + "/"
: new FilePath(typeof(object).Assembly.Location).GetDirectory().FullPath + "/";
// Use FrameworkPathOverride when not running on Windows.
Information("Build will use FrameworkPathOverride={0} since not building on Windows.", frameworkPathOverride);
msBuildSettings.WithProperty("FrameworkPathOverride", frameworkPathOverride);
}
// Executed BEFORE the first task.
Information("Running tasks...");
});
Teardown(ctx =>
{
// Executed AFTER the last task.
Information("Finished running tasks.");
});
///////////////////////////////////////////////////////////////////////////////
// TASKS
///////////////////////////////////////////////////////////////////////////////
Task("Clean")
.Does(() => {
CleanDirectories(
new[] {
"./src/bin",
"./test/bin",
"./src/obj",
"./test/obj",
"./artifacts/nuget"
}
);
});
Task("Restore")
.IsDependentOn("Clean")
.Does(() => {
DotNetCoreRestore("./LitJSON.sln",
new DotNetCoreRestoreSettings { MSBuildSettings = msBuildSettings }
);
});
Task("Build")
.IsDependentOn("Restore")
.Does(() => {
DotNetCoreBuild("./LitJSON.sln",
new DotNetCoreBuildSettings {
Configuration = configuration,
MSBuildSettings = msBuildSettings,
ArgumentCustomization = args => args.Append("--no-restore")
}
);
});
Task("Test")
.IsDependentOn("Build")
.Does(() => {
DotNetCoreTest("./test/LitJSON.Tests.csproj",
new DotNetCoreTestSettings {
Configuration = configuration,
Framework = "netcoreapp2.0",
NoBuild = true,
ArgumentCustomization = args => args.Append("--no-restore")
}
);
NUnit3("./test/**/bin/" + configuration + "/net45/*.Tests.dll", new NUnit3Settings {
NoResults = true
});
});
Task("Test-SourceLink")
.IsDependentOn("Build")
.WithCriteria(IsRunningOnWindows())
.Does(() => {
foreach(var asssembly in GetFiles("./src/LitJson/bin/" + configuration + "/**/*.dll"))
{
DotNetCoreTool(litjsonProjectPath.FullPath, "sourcelink", $"test {asssembly}");
}
});
Task("Package")
.IsDependentOn("Test")
.IsDependentOn("Test-SourceLink")
.Does(() => {
DotNetCorePack(litjsonProjectPath.FullPath,
new DotNetCorePackSettings {
Configuration = configuration,
NoBuild = true,
IncludeSymbols = true,
OutputDirectory = "./artifacts/nuget",
MSBuildSettings = msBuildSettings,
ArgumentCustomization = args => args.Append("--no-restore")
}
);
});
Task("Upload-AppVeyor-Artifacts")
.IsDependentOn("Package")
.WithCriteria(AppVeyor.IsRunningOnAppVeyor)
.Does(() => {
foreach(var artifact in GetFiles("./artifacts/**/*.*"))
{
AppVeyor.UploadArtifact(artifact);
}
});
Task("Publish-MyGet")
.IsDependentOn("Package")
.WithCriteria((AppVeyor.IsRunningOnAppVeyor && !AppVeyor.Environment.PullRequest.IsPullRequest)
|| StringComparer.OrdinalIgnoreCase.Equals(target, "Publish-MyGet"))
.Does(() => {
// Resolve the API key.
var apiKey = EnvironmentVariable("MYGET_API_KEY");
if(string.IsNullOrEmpty(apiKey)) {
throw new InvalidOperationException("Could not resolve MyGet API key.");
}
// Resolve the API url.
var apiUrl = EnvironmentVariable("MYGET_API_URL");
if(string.IsNullOrEmpty(apiUrl)) {
throw new InvalidOperationException("Could not resolve MyGet API url.");
}
foreach(var package in (GetFiles("./artifacts/nuget/*.nupkg") - GetFiles("./artifacts/nuget/*.symbols.nupkg")))
{
DotNetCoreNuGetPush(package.FullPath,
new DotNetCoreNuGetPushSettings {
ApiKey = apiKey,
Source = apiUrl
}
);
}
});
Task("Publish-NuGet")
.IsDependentOn("Package")
.WithCriteria((AppVeyor.IsRunningOnAppVeyor && AppVeyor.Environment.Repository.Tag.IsTag && !AppVeyor.Environment.PullRequest.IsPullRequest)
|| StringComparer.OrdinalIgnoreCase.Equals(target, "Publish-NuGet"))
.Does(() => {
// Resolve the API key.
var apiKey = EnvironmentVariable("NUGET_API_KEY");
if(string.IsNullOrEmpty(apiKey)) {
throw new InvalidOperationException("Could not resolve MyGet API key.");
}
// Resolve the API url.
var apiUrl = EnvironmentVariable("NUGET_API_URL");
if(string.IsNullOrEmpty(apiUrl)) {
throw new InvalidOperationException("Could not resolve MyGet API url.");
}
foreach(var package in (GetFiles("./artifacts/nuget/*.nupkg") - GetFiles("./artifacts/nuget/*.symbols.nupkg")))
{
DotNetCoreNuGetPush(package.FullPath,
new DotNetCoreNuGetPushSettings {
ApiKey = apiKey,
Source = apiUrl
}
);
}
});
Task("AppVeyor")
.IsDependentOn("Upload-AppVeyor-Artifacts")
.IsDependentOn("Publish-MyGet")
.IsDependentOn("Publish-NuGet");
Task("Default")
.IsDependentOn("Package");
RunTarget(target);
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/ElvexGame/litjson.git
git@gitee.com:ElvexGame/litjson.git
ElvexGame
litjson
litjson
develop

搜索帮助