/
setup.cake
92 lines (77 loc) · 3.42 KB
/
setup.cake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#addin "nuget:?package=Cake.Coverlet&version=2.0.1"
#load "nuget:https://ci.appveyor.com/nuget/cake-recipe-pylg5x5ru9c2?package=Cake.Recipe&prerelease&version=0.3.0-alpha0477"
Environment.SetVariableNames();
BuildParameters.SetParameters(
context: Context,
buildSystem: BuildSystem,
sourceDirectoryPath: "./src",
title: "Cake.Transifex",
repositoryOwner: "cake-contrib",
repositoryName: "Cake.Transifex",
appVeyorAccountName: "cakecontrib",
shouldRunDotNetCorePack: true,
shouldBuildNugetSourcePackage: false,
shouldDeployGraphDocumentation: false,
solutionFilePath: "./Cake.Transifex.sln",
testFilePattern: "/**/*.Tests.csproj",
shouldRunCodecov: true,
shouldExecuteGitLink: false,
shouldRunGitVersion: true
);
ToolSettings.SetToolSettings(
context: Context,
dupFinderExcludePattern: new string[] {
BuildParameters.RootDirectoryPath + "/src/*.Tests/**/*.cs"
},
dupFinderExcludeFilesByStartingCommentSubstring: new string[] {
"<auto-generated>"
},
testCoverageFilter: "+[Cake.Transifex*]* -[*.Tests]*",
testCoverageExcludeByAttribute: "*.ExcludeFromCodeCoverage*",
testCoverageExcludeByFile: "*Designer.cs;*.g.cs;*.g.i.cs"
);
if (BuildParameters.IsRunningOnAppVeyor &&
BuildParameters.IsMainRepository && BuildParameters.IsMasterBranch && !BuildParameters.IsTagged) {
BuildParameters.Tasks.AppVeyorTask.IsDependentOn("Create-Release-Notes");
}
((CakeTask)BuildParameters.Tasks.DotNetCoreTestTask.Task).Actions.Clear();
((CakeTask)BuildParameters.Tasks.DotNetCoreTestTask.Task).Criterias.Clear();
((CakeTask)BuildParameters.Tasks.DotNetCoreTestTask.Task).Dependencies.Clear();
BuildParameters.Tasks.DotNetCoreTestTask
.IsDependentOn("Install-ReportGenerator")
.Does(() => {
var projects = GetFiles(BuildParameters.TestDirectoryPath + (BuildParameters.TestFilePattern ?? "/**/*Tests.csproj"));
var testFileName = BuildParameters.Paths.Files.TestCoverageOutputFilePath.GetFilename();
var testDirectory = BuildParameters.Paths.Files.TestCoverageOutputFilePath.GetDirectory();
var settings = new CoverletSettings {
CollectCoverage = true,
CoverletOutputFormat = CoverletOutputFormat.opencover,
CoverletOutputDirectory = testDirectory,
CoverletOutputName = testFileName.ToString(),
MergeWithFile = BuildParameters.Paths.Files.TestCoverageOutputFilePath
};
foreach (var line in ToolSettings.TestCoverageExcludeByFile.Split(';')) {
foreach (var file in GetFiles("**/" + line)) {
settings = settings.WithFileExclusion(file.FullPath);
}
}
var testSettings = new DotNetCoreTestSettings {
Configuration = BuildParameters.Configuration,
NoBuild = true
};
foreach (var project in projects) {
DotNetCoreTest(project.FullPath, testSettings, settings);
}
if (FileExists(BuildParameters.Paths.Files.TestCoverageOutputFilePath)) {
ReportGenerator(BuildParameters.Paths.Files.TestCoverageOutputFilePath, BuildParameters.Paths.Directories.TestCoverage);
}
});
BuildParameters.Tasks.TransifexPushSourceResource.WithCriteria(() => BuildParameters.IsRunningOnWindows);
Task("Linux")
.IsDependentOn("Package")
.IsDependentOn("Upload-Coverage-Report");
Task("Appveyor-Linux")
.IsDependentOn("Linux")
.IsDependentOn("Upload-AppVeyor-Artifacts");
BuildParameters.PrintParameters(Context);
Build.RunDotNetCore();