-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathBuild.CI.cs
103 lines (97 loc) · 3.53 KB
/
Build.CI.cs
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
93
94
95
96
97
98
99
100
101
102
103
using Nuke.Common.CI.GitHubActions;
using Nuke.Common.CI.GitHubActions.Configuration;
using Rocket.Surgery.Nuke.ContinuousIntegration;
using Rocket.Surgery.Nuke.DotNetCore;
using Rocket.Surgery.Nuke.GithubActions;
using Rocket.Surgery.Nuke.Jobs;
#pragma warning disable CA1050
[GitHubActionsSteps(
"ci-ignore",
GitHubActionsImage.MacOsLatest,
GitHubActionsImage.WindowsLatest,
GitHubActionsImage.UbuntuLatest,
AutoGenerate = false,
On = [RocketSurgeonGitHubActionsTrigger.Push],
OnPushTags = ["v*"],
OnPushBranches = ["master", "main", "next"],
OnPullRequestBranches = ["master", "main", "next"],
Enhancements = [nameof(CiIgnoreMiddleware)]
)]
[GitHubActionsSteps(
"ci",
GitHubActionsImage.MacOsLatest,
GitHubActionsImage.WindowsLatest,
GitHubActionsImage.UbuntuLatest,
AutoGenerate = false,
On = [RocketSurgeonGitHubActionsTrigger.Push],
OnPushTags = ["v*"],
OnPushBranches = ["master", "main", "next"],
OnPullRequestBranches = ["master", "main", "next"],
InvokedTargets = [nameof(Default)],
NonEntryTargets = [
nameof(ICIEnvironment.CIEnvironment),
nameof(ITriggerCodeCoverageReports.GenerateCodeCoverageReportCobertura),
nameof(IGenerateCodeCoverageBadges.GenerateCodeCoverageBadges),
nameof(IGenerateCodeCoverageReport.GenerateCodeCoverageReport),
nameof(IGenerateCodeCoverageSummary.GenerateCodeCoverageSummary),
nameof(Default),
],
ExcludedTargets = [nameof(ICanClean.Clean), nameof(ICanRestoreWithDotNetCore.DotnetToolRestore)],
Enhancements = [nameof(CiMiddleware)]
)]
[CloseMilestoneJob(AutoGenerate = false)]
[DraftReleaseJob(AutoGenerate = false)]
[UpdateMilestoneJob(AutoGenerate = false)]
[PrintBuildVersion]
[PrintCIEnvironment]
[UploadLogs]
[TitleEvents]
[ContinuousIntegrationConventions]
internal sealed partial class Pipeline
{
public static RocketSurgeonGitHubActionsConfiguration CiIgnoreMiddleware(
RocketSurgeonGitHubActionsConfiguration configuration
)
{
( (RocketSurgeonsGithubActionsJob)configuration.Jobs[0] ).Steps = new List<GitHubActionsStep>
{
new RunStep("N/A")
{
Run = "echo \"No build required\""
}
};
return configuration.IncludeRepositoryConfigurationFiles();
}
public static RocketSurgeonGitHubActionsConfiguration CiMiddleware(
RocketSurgeonGitHubActionsConfiguration configuration
)
{
configuration
.ExcludeRepositoryConfigurationFiles()
.Jobs.OfType<RocketSurgeonsGithubActionsJob>()
.First(z => z.Name.Equals("Build", StringComparison.OrdinalIgnoreCase))
.ConfigureStep<CheckoutStep>(step => step.FetchDepth = 0)
.UseDotNetSdks("6.0", "8.0", "9.0")
.AddNuGetCache()
.AddVscodeExtensionTests()
.PublishLogs<Pipeline>()
.PublishArtifacts<Pipeline>()
.FailFast = false;
return configuration;
}
}
public static class JobExtensions
{
public static RocketSurgeonsGithubActionsJob AddVscodeExtensionTests(this RocketSurgeonsGithubActionsJob job)
{
return job
.AddStep(new RunStep("Npm install") {
Run = "npm ci",
WorkingDirectory = Pipeline.VscodeTestExtensionProjectDirectory
})
.AddStep(new HeadlessRunStep("Vscode extension tests") {
Run = "npm run test",
WorkingDirectory = Pipeline.VscodeTestExtensionProjectDirectory
});
}
}