Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix rocket.surgery.nuke Update #1449

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions .build/.build.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,9 @@
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<RootNamespace></RootNamespace>
<RootNamespace />
<IsPackable>False</IsPackable>
<NoWarn>CS0649;CS0169</NoWarn>
<NukeTelemetryVersion>1</NukeTelemetryVersion>
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>
</PropertyGroup>

<ItemGroup>
Expand Down
83 changes: 29 additions & 54 deletions .build/Solution.cs → .build/Build.CI.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,82 +3,58 @@
using Rocket.Surgery.Nuke.ContinuousIntegration;
using Rocket.Surgery.Nuke.DotNetCore;
using Rocket.Surgery.Nuke.GithubActions;
using Rocket.Surgery.Nuke.Jobs;

namespace Build;

internal class LocalConstants
{
public static string[] PathsIgnore => new[]
{
".codecov.yml",
".editorconfig",
".gitattributes",
".gitignore",
".gitmodules",
".lintstagedrc.js",
".prettierignore",
".prettierrc",
"LICENSE",
"nukeeper.settings.json",
"omnisharp.json",
"package-lock.json",
"package.json",
"Readme.md",
".github/dependabot.yml",
".github/labels.yml",
".github/release.yml",
".github/renovate.json",
};
}
#pragma warning disable CA1050

[GitHubActionsSteps(
"ci-ignore",
GitHubActionsImage.MacOsLatest,
GitHubActionsImage.WindowsLatest,
GitHubActionsImage.UbuntuLatest,
AutoGenerate = false,
On = new[] { RocketSurgeonGitHubActionsTrigger.Push },
OnPushTags = new[] { "v*" },
OnPushBranches = new[] { "master", "main", "next" },
OnPullRequestBranches = new[] { "master", "main", "next" },
Enhancements = new[] { nameof(CiIgnoreMiddleware) }
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 = new[] { RocketSurgeonGitHubActionsTrigger.Push },
OnPushTags = new[] { "v*" },
OnPushBranches = new[] { "master", "main", "next" },
OnPullRequestBranches = new[] { "master", "main", "next" },
InvokedTargets = new[] { nameof(Default) },
NonEntryTargets = new[]
{
On = [RocketSurgeonGitHubActionsTrigger.Push],
OnPushTags = ["v*"],
OnPushBranches = ["master", "main", "next"],
OnPullRequestBranches = ["master", "main", "next"],
InvokedTargets = [nameof(Default)],
NonEntryTargets = [
nameof(ICIEnvironment.CIEnvironment),
nameof(ITriggerCodeCoverageReports.TriggerCodeCoverageReports),
nameof(ITriggerCodeCoverageReports.GenerateCodeCoverageReportCobertura),
nameof(IGenerateCodeCoverageBadges.GenerateCodeCoverageBadges),
nameof(IGenerateCodeCoverageReport.GenerateCodeCoverageReport),
nameof(IGenerateCodeCoverageSummary.GenerateCodeCoverageSummary),
nameof(Default)
},
ExcludedTargets = new[] { nameof(ICanClean.Clean), nameof(ICanRestoreWithDotNetCore.DotnetToolRestore) },
Enhancements = new[] { nameof(CiMiddleware) }
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]
public partial class Solution
internal sealed partial class Pipeline
{
public static RocketSurgeonGitHubActionsConfiguration CiIgnoreMiddleware(
RocketSurgeonGitHubActionsConfiguration configuration
)
{
configuration.IncludeRepositoryConfigurationFiles();

( (RocketSurgeonsGithubActionsJob)configuration.Jobs[0] ).Steps = new List<GitHubActionsStep>
{
new RunStep("N/A")
Expand All @@ -87,7 +63,7 @@ RocketSurgeonGitHubActionsConfiguration configuration
}
};

return configuration;
return configuration.IncludeRepositoryConfigurationFiles();
}

public static RocketSurgeonGitHubActionsConfiguration CiMiddleware(
Expand All @@ -96,33 +72,32 @@ RocketSurgeonGitHubActionsConfiguration configuration
{
configuration
.ExcludeRepositoryConfigurationFiles()
.AddNugetPublish()
.Jobs.OfType<RocketSurgeonsGithubActionsJob>()
.First(z => z.Name.Equals("Build", StringComparison.OrdinalIgnoreCase))
.ConfigureStep<CheckoutStep>(step => step.FetchDepth = 0)
.UseDotNetSdks("3.1", "6.0", "8.0", "9.0")
.UseDotNetSdks("6.0", "8.0", "9.0")
.AddNuGetCache()
.AddVscodeExtensionTests()
.PublishLogs<Solution>()
.PublishArtifacts<Solution>()
.PublishLogs<Pipeline>()
.PublishArtifacts<Pipeline>()
.FailFast = false;

return configuration;
}
}

public static class Extensions
public static class JobExtensions
{
public static RocketSurgeonsGithubActionsJob AddVscodeExtensionTests(this RocketSurgeonsGithubActionsJob job)
{
return job
.AddStep(new RunStep("Npm install") {
Run = "npm ci",
WorkingDirectory = Solution.VscodeTestExtensionProjectDirectory
WorkingDirectory = Pipeline.VscodeTestExtensionProjectDirectory
})
.AddStep(new HeadlessRunStep("Vscode extension tests") {
Run = "npm run test",
WorkingDirectory = Solution.VscodeTestExtensionProjectDirectory
WorkingDirectory = Pipeline.VscodeTestExtensionProjectDirectory
});
}
}
58 changes: 30 additions & 28 deletions .build/Build.cs
Original file line number Diff line number Diff line change
@@ -1,37 +1,35 @@
using JetBrains.Annotations;
using Nuke.Common;
using Nuke.Common.CI;
using Nuke.Common.Execution;
using Nuke.Common.Git;
using Nuke.Common.IO;
using Nuke.Common.Tooling;
using Nuke.Common.Tools.DotNet;
using Nuke.Common.Tools.GitVersion;
using Nuke.Common.Tools.MSBuild;
using Nuke.Common.Tools.Npm;
using Rocket.Surgery.Nuke.DotNetCore;

namespace Build;
#pragma warning disable CA1050

[PublicAPI]
[UnsetVisualStudioEnvironmentVariables]
[PackageIcon("http://www.omnisharp.net/images/logo.png")]
[EnsureReadmeIsUpdated]
[DotNetVerbosityMapping]
[MSBuildVerbosityMapping]
[NuGetVerbosityMapping]
[ShutdownDotNetAfterServerBuild]
[LocalBuildConventions]
public sealed partial class Solution : NukeBuild,
internal sealed partial class Pipeline : NukeBuild,
ICanRestoreWithDotNetCore,
ICanBuildWithDotNetCore,
ICanTestWithDotNetCore,
ICanPackWithDotNetCore,
IHaveDataCollector,
ICanClean,
ICanUpdateReadme,
IHavePublicApis,
IGenerateCodeCoverageReport,
IGenerateCodeCoverageSummary,
IGenerateCodeCoverageBadges,
IGenerateDocFx,
IHaveConfiguration<Configuration>
{
/// <summary>
Expand All @@ -41,29 +39,39 @@ public sealed partial class Solution : NukeBuild,
/// - Microsoft VisualStudio https://nuke.build/visualstudio
/// - Microsoft VSCode https://nuke.build/vscode
/// </summary>
public static int Main() => Execute<Solution>(x => x.Default);
public static int Main() => Execute<Pipeline>(x => x.Default);

[OptionalGitRepository] public GitRepository? GitRepository { get; }
public Target Build => _ => _;

private Target Default => _ => _
.DependsOn(Restore)
.DependsOn(Build)
.DependsOn(Test)
.DependsOn(Pack);
public Target Clean => _ => _;

[Parameter("Configuration to build")]
public Configuration Configuration { get; } = IsLocalBuild ? Configuration.Debug : Configuration.Release;

public Target Build => _ => _.Inherit<ICanBuildWithDotNetCore>(x => x.CoreBuild);
[OptionalGitRepository]
public GitRepository? GitRepository { get; }

public Target Pack => _ => _.Inherit<ICanPackWithDotNetCore>(x => x.CorePack)
.DependsOn(Clean);
[GitVersion(NoFetch = true, NoCache = false)]
public GitVersion GitVersion { get; } = null!;

[ComputedGitVersion] public GitVersion GitVersion { get; } = null!;
public Target Lint => _ => _;

public Target Clean => _ => _.Inherit<ICanClean>(x => x.Clean);
public Target Restore => _ => _.Inherit<ICanRestoreWithDotNetCore>(x => x.CoreRestore);
public Target Pack => _ => _.DependsOn(Clean);

public Target Test => _ => _.Inherit<ICanTestWithDotNetCore>(x => x.CoreTest);
public Target Restore => _ => _;

public Target Test => _ => _;

[NonEntryTarget]
private Target Default => _ => _
.DependsOn(Restore)
.DependsOn(Build)
.DependsOn(Test)
.DependsOn(Pack);

#pragma warning disable CA1822
public Target NpmInstall => _ => _
#pragma warning restore CA1822 // Member 'NpmInstall' does not access instance data and can be marked as static
.Executes(() =>
NpmTasks.NpmCi(s => s
.SetProcessWorkingDirectory(VscodeTestExtensionProjectDirectory)));
Expand All @@ -75,13 +83,7 @@ public sealed partial class Solution : NukeBuild,
.SetProcessWorkingDirectory(VscodeTestExtensionProjectDirectory)
.SetCommand("test")));

public Target BuildVersion => _ => _.Inherit<IHaveBuildVersion>(x => x.BuildVersion)
.Before(Default)
.Before(Clean);

[Parameter("Configuration to build")] public Configuration Configuration { get; } = IsLocalBuild ? Configuration.Debug : Configuration.Release;

AbsolutePath ICanUpdateReadme.ReadmeFilePath => RootDirectory / "README.md";
public Target BuildVersion => _ => _.Before(Default).Before(Clean);

internal const string VscodeTestExtensionProjectDirectory = "vscode-testextension";
}
6 changes: 3 additions & 3 deletions .build/Configuration.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
using System.ComponentModel;
using Nuke.Common.Tooling;

namespace Build;
#pragma warning disable CA1050, CA1724, CA2225

[TypeConverter(typeof(TypeConverter<Configuration>))]
public class Configuration : Enumeration
{
public static Configuration Debug = new() { Value = nameof(Debug) };
public static Configuration Release = new() { Value = nameof(Release) };
public static readonly Configuration Debug = new() { Value = nameof(Debug) };
public static readonly Configuration Release = new() { Value = nameof(Release) };

public static implicit operator string(Configuration configuration) => configuration.Value;
}
Loading
Loading