Skip to content

Commit 508308f

Browse files
committed
Improved build system
1 parent ce76a67 commit 508308f

File tree

2 files changed

+212
-210
lines changed

2 files changed

+212
-210
lines changed

build.cake

Lines changed: 7 additions & 210 deletions
Original file line numberDiff line numberDiff line change
@@ -1,214 +1,11 @@
1-
/* ****************************************
2-
Publishing workflow
3-
-------------------
4-
5-
- Update CHANGELOG.md
6-
- Run a normal build with Cake
7-
- Push to devel and FF merge to master
8-
- Switch to master
9-
- Run a Publish build with Cake
10-
- Switch back to devel branch
11-
**************************************** */
12-
13-
#addin "Cake.FileHelpers"
14-
#addin "Octokit"
15-
using Octokit;
16-
171
var target = Argument("target", "Default");
18-
var configuration = Argument("configuration", "Release");
19-
var isRunningOnUnix = IsRunningOnUnix();
20-
var isRunningOnWindows = IsRunningOnWindows();
21-
var isRunningOnAppVeyor = AppVeyor.IsRunningOnAppVeyor;
22-
var isPullRequest = AppVeyor.Environment.PullRequest.IsPullRequest;
23-
var buildNumber = AppVeyor.Environment.Build.Number;
24-
var releaseNotes = ParseReleaseNotes("./CHANGELOG.md");
25-
var version = releaseNotes.Version.ToString();
26-
var buildDir = Directory("./src/AngleSharp.Xml/bin") + Directory(configuration);
27-
var buildResultDir = Directory("./bin") + Directory(version);
28-
var nugetRoot = buildResultDir + Directory("nuget");
29-
30-
// Initialization
31-
// ----------------------------------------
32-
33-
Setup(_ =>
2+
var projectName = "AngleSharp.Xml";
3+
var solutionName = "AngleSharp.Xml";
4+
var frameworks = new Dictionary<String, String>
345
{
35-
Information("Building version {0} of AngleSharp.Xml.", version);
36-
Information("For the publish target the following environment variables need to be set:");
37-
Information(" NUGET_API_KEY, GITHUB_API_TOKEN");
38-
});
39-
40-
// Tasks
41-
// ----------------------------------------
42-
43-
Task("Clean")
44-
.Does(() =>
45-
{
46-
CleanDirectories(new DirectoryPath[] { buildDir, buildResultDir, nugetRoot });
47-
});
48-
49-
Task("Restore-Packages")
50-
.IsDependentOn("Clean")
51-
.Does(() =>
52-
{
53-
NuGetRestore("./src/AngleSharp.Xml.sln", new NuGetRestoreSettings
54-
{
55-
ToolPath = "tools/nuget.exe",
56-
});
57-
});
58-
59-
Task("Build")
60-
.IsDependentOn("Restore-Packages")
61-
.Does(() =>
62-
{
63-
ReplaceRegexInFiles("./src/Directory.Build.props", "(?<=<Version>)(.+?)(?=</Version>)", version);
64-
DotNetCoreBuild("./src/AngleSharp.Xml.sln", new DotNetCoreBuildSettings
65-
{
66-
Configuration = configuration,
67-
});
68-
});
69-
70-
Task("Run-Unit-Tests")
71-
.IsDependentOn("Build")
72-
.Does(() =>
73-
{
74-
var settings = new DotNetCoreTestSettings
75-
{
76-
Configuration = configuration,
77-
};
78-
79-
if (isRunningOnAppVeyor)
80-
{
81-
settings.TestAdapterPath = Directory(".");
82-
settings.Logger = "Appveyor";
83-
// TODO Finds a way to exclude tests not allowed to run on appveyor
84-
// Not used in current code
85-
//settings.Where = "cat != ExcludeFromAppVeyor";
86-
}
87-
88-
DotNetCoreTest("./src/AngleSharp.Xml.Tests/", settings);
89-
});
90-
91-
Task("Copy-Files")
92-
.IsDependentOn("Build")
93-
.Does(() =>
94-
{
95-
var mapping = new Dictionary<String, String>
96-
{
97-
{ "netstandard1.3", "netstandard1.3" },
98-
};
99-
100-
foreach (var item in mapping)
101-
{
102-
var targetDir = nugetRoot + Directory("lib") + Directory(item.Key);
103-
CreateDirectory(targetDir);
104-
CopyFiles(new FilePath[]
105-
{
106-
buildDir + Directory(item.Value) + File("AngleSharp.Xml.dll"),
107-
buildDir + Directory(item.Value) + File("AngleSharp.Xml.xml"),
108-
}, targetDir);
109-
}
110-
111-
CopyFiles(new FilePath[] { "src/AngleSharp.Xml.nuspec" }, nugetRoot);
112-
});
113-
114-
Task("Create-Package")
115-
.IsDependentOn("Copy-Files")
116-
.Does(() =>
117-
{
118-
var nugetExe = GetFiles("./tools/**/nuget.exe").FirstOrDefault()
119-
?? (isRunningOnAppVeyor ? GetFiles("C:\\Tools\\NuGet3\\nuget.exe").FirstOrDefault() : null)
120-
?? throw new InvalidOperationException("Could not find nuget.exe.");
121-
122-
var nuspec = nugetRoot + File("AngleSharp.Xml.nuspec");
123-
124-
NuGetPack(nuspec, new NuGetPackSettings
125-
{
126-
Version = version,
127-
OutputDirectory = nugetRoot,
128-
Symbols = false,
129-
Properties = new Dictionary<String, String>
130-
{
131-
{ "Configuration", configuration },
132-
},
133-
});
134-
});
135-
136-
Task("Publish-Package")
137-
.IsDependentOn("Create-Package")
138-
.IsDependentOn("Run-Unit-Tests")
139-
.Does(() =>
140-
{
141-
var apiKey = EnvironmentVariable("NUGET_API_KEY");
142-
143-
if (String.IsNullOrEmpty(apiKey))
144-
{
145-
throw new InvalidOperationException("Could not resolve the NuGet API key.");
146-
}
147-
148-
foreach (var nupkg in GetFiles(nugetRoot.Path.FullPath + "/*.nupkg"))
149-
{
150-
NuGetPush(nupkg, new NuGetPushSettings
151-
{
152-
Source = "https://nuget.org/api/v2/package",
153-
ApiKey = apiKey,
154-
});
155-
}
156-
});
157-
158-
Task("Publish-Release")
159-
.IsDependentOn("Publish-Package")
160-
.IsDependentOn("Run-Unit-Tests")
161-
.Does(() =>
162-
{
163-
var githubToken = EnvironmentVariable("GITHUB_API_TOKEN");
164-
165-
if (String.IsNullOrEmpty(githubToken))
166-
{
167-
throw new InvalidOperationException("Could not resolve AngleSharp GitHub token.");
168-
}
169-
170-
var github = new GitHubClient(new ProductHeaderValue("AngleSharpCakeBuild"))
171-
{
172-
Credentials = new Credentials(githubToken),
173-
};
174-
175-
var newRelease = github.Repository.Release;
176-
newRelease.Create("AngleSharp", "AngleSharp.Xml", new NewRelease("v" + version)
177-
{
178-
Name = version,
179-
Body = String.Join(Environment.NewLine, releaseNotes.Notes),
180-
Prerelease = false,
181-
TargetCommitish = "master",
182-
}).Wait();
183-
});
184-
185-
Task("Update-AppVeyor-Build-Number")
186-
.WithCriteria(() => isRunningOnAppVeyor)
187-
.Does(() =>
188-
{
189-
var num = AppVeyor.Environment.Build.Number;
190-
AppVeyor.UpdateBuildVersion($"{version}-{num}");
191-
});
192-
193-
// Targets
194-
// ----------------------------------------
195-
196-
Task("Package")
197-
.IsDependentOn("Run-Unit-Tests")
198-
.IsDependentOn("Create-Package");
199-
200-
Task("Default")
201-
.IsDependentOn("Package");
202-
203-
Task("Publish")
204-
.IsDependentOn("Publish-Package")
205-
.IsDependentOn("Publish-Release");
206-
207-
Task("AppVeyor")
208-
.IsDependentOn("Run-Unit-Tests")
209-
.IsDependentOn("Update-AppVeyor-Build-Number");
6+
{ "netstandard1.3", "netstandard1.3" },
7+
};
2108

211-
// Execution
212-
// ----------------------------------------
9+
#load tools/anglesharp.cake
21310

214-
RunTarget(target);
11+
RunTarget(target);

0 commit comments

Comments
 (0)