Skip to content

Commit

Permalink
Updated build process
Browse files Browse the repository at this point in the history
  • Loading branch information
bradwilson committed Feb 3, 2024
1 parent 1f5a062 commit 7226c5a
Show file tree
Hide file tree
Showing 7 changed files with 68 additions and 17 deletions.
7 changes: 2 additions & 5 deletions .github/workflows/push-main.yaml
Expand Up @@ -36,10 +36,7 @@ jobs:
- name: Get .NET information
run: dotnet --info

- name: "Build target: BuildAll"
run: dotnet run --project tools/builder --no-launch-profile -- BuildAll --timing

- name: "Build target: PublishPackages"
- name: "Build target: BuildAll & PublishPackages"
env:
PUSH_APIKEY: ${{ secrets.PUSH_APIKEY }}
PUSH_URI: ${{ secrets.PUSH_URI }}
Expand All @@ -50,7 +47,7 @@ jobs:
SIGN_TENANT: ${{ secrets.SIGN_TENANT }}
SIGN_TIMESTAMP_URI: ${{ secrets.SIGN_TIMESTAMP_URI }}
SIGN_VAULT_URI: ${{ secrets.SIGN_VAULT_URI }}
run: dotnet run --project tools/builder --no-launch-profile -- PublishPackages --timing
run: dotnet run --project tools/builder --no-launch-profile -- BuildAll PublishPackages --timing

- name: "Upload artifact: test"
uses: actions/upload-artifact@v3
Expand Down
Expand Up @@ -46,6 +46,8 @@

<Target Name="UpdateNuSpecProperties" BeforeTargets="GenerateNuspec" DependsOnTargets="GetBuildVersion">
<PropertyGroup>
<SignedPath />
<SignedPath Condition=" '$(SIGN_APP_SECRET)' != '' ">signed\</SignedPath>
<!-- Never put the Git hash in the package version -->
<PackageVersion>$(BuildVersionSimple)$(PrereleaseVersion)</PackageVersion>
<!-- Pass through values we don't know ahead of time for any hand-crafted .nuspec files -->
Expand All @@ -54,6 +56,7 @@
GitCommitId=$(GitCommitId);
MicrosoftTestPlatformObjectModelVersion=$(MicrosoftTestPlatformObjectModelVersion);
PackageVersion=$(PackageVersion);
SignedPath=$(SignedPath);
</NuspecProperties>
</PropertyGroup>
</Target>
Expand Down
11 changes: 9 additions & 2 deletions src/xunit.runner.visualstudio/xunit.runner.visualstudio.nuspec
Expand Up @@ -25,14 +25,21 @@
<frameworkAssembly assemblyName="mscorlib" targetFramework="net462" />
</frameworkAssemblies>
</metadata>
<!-- Remember to update tools\builder\targets\SignAssemblies.cs when assemblies are added or removed -->
<files>
<file target="_content\" src="..\..\logo-128-transparent.png" />
<file target="_content\" src="..\..\README.md" />

<file target="build\net462\" src="bin\$Configuration$\net462\xunit.*.dll" />
<file target="build\net462\" src="bin\$Configuration$\net462\xunit.abstractions.dll" />
<file target="build\net462\" src="bin\$Configuration$\net462\xunit.runner.reporters.net452.dll" />
<file target="build\net462\" src="bin\$Configuration$\net462\xunit.runner.utility.net452.dll" />
<file target="build\net462\" src="bin\$Configuration$\net462\$SignedPath$xunit.runner.visualstudio.testadapter.dll" />
<file target="build\net462\xunit.runner.visualstudio.props" src="build\xunit.runner.visualstudio.desktop.props" />

<file target="build\net6.0\" src="bin\$Configuration$\net6.0\xunit.*.dll" />
<file target="build\net6.0\" src="bin\$Configuration$\net6.0\xunit.abstractions.dll" />
<file target="build\net6.0\" src="bin\$Configuration$\net6.0\xunit.runner.reporters.netcoreapp10.dll" />
<file target="build\net6.0\" src="bin\$Configuration$\net6.0\xunit.runner.utility.netcoreapp10.dll" />
<file target="build\net6.0\" src="bin\$Configuration$\net6.0\$SignedPath$xunit.runner.visualstudio.testadapter.dll" />
<file target="build\net6.0\xunit.runner.visualstudio.props" src="build\xunit.runner.visualstudio.dotnetcore.props" />

<file target="lib\net462\" src="build\_._" />
Expand Down

This file was deleted.

22 changes: 15 additions & 7 deletions tools/builder/targets/Packages.cs
@@ -1,4 +1,5 @@
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Xunit.BuildTools.Models;

Expand All @@ -10,13 +11,20 @@ public static async Task OnExecute(BuildContext context)
{
context.BuildStep("Creating NuGet packages");

var packArgs = $"pack --nologo --no-build --configuration {context.ConfigurationText} --output {context.PackageOutputFolder} --verbosity {context.Verbosity} src/xunit.runner.visualstudio -p:NuspecFile=xunit.runner.visualstudio.nuspec";
await context.Exec("dotnet", packArgs);
// Clean up any existing packages to force re-packing
var packageFiles = Directory.GetFiles(context.PackageOutputFolder, "*.nupkg");
foreach (var packageFile in packageFiles)
File.Delete(packageFile);

File.Copy(
Path.Join(context.BaseFolder, "src", "xunit.runner.visualstudio", "xunit.runner.visualstudio.sign-file-list"),
Path.Join(context.PackageOutputFolder, "xunit.runner.visualstudio.sign-file-list"),
overwrite: true
);
// Enumerate the .nuspec files and pack those
var srcFolder = Path.Join(context.BaseFolder, "src");
var nuspecFiles =
Directory
.GetFiles(srcFolder, "*.nuspec", SearchOption.AllDirectories)
.ToList();

// Pack the .nuspec file(s)
foreach (var nuspecFile in nuspecFiles.OrderBy(x => x))
await context.Exec("dotnet", $"pack --nologo --no-build --configuration {context.ConfigurationText} --output {context.PackageOutputFolder} --verbosity {context.Verbosity} \"{Path.GetDirectoryName(nuspecFile)}\" -p:NuspecFile={Path.GetFileName(nuspecFile)}");
}
}
38 changes: 38 additions & 0 deletions tools/builder/targets/SignAssemblies.cs
@@ -0,0 +1,38 @@
using System;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Xunit.BuildTools.Models;

namespace Xunit.BuildTools.Targets;

public static partial class SignAssemblies
{
public static Task OnExecute(BuildContext context)
{
// Check early because we don't need to make copies or show the banner for non-signed scenarios
if (!context.CanSign)
return Task.CompletedTask;

context.BuildStep("Signing binaries");

// Note that any changes to .nuspec files means this list needs to be updated
var binaries =
new[] {
Path.Combine(context.BaseFolder, "src", "xunit.runner.visualstudio", "bin", context.ConfigurationText, "net462", "xunit.runner.visualstudio.testadapter.dll"),
Path.Combine(context.BaseFolder, "src", "xunit.runner.visualstudio", "bin", context.ConfigurationText, "net6.0", "xunit.runner.visualstudio.testadapter.dll"),
}.Select(unsignedPath =>
{
var unsignedFolder = Path.GetDirectoryName(unsignedPath) ?? throw new InvalidOperationException($"Path '{unsignedPath}' did not have a folder");
var signedFolder = Path.Combine(unsignedFolder, "signed");
Directory.CreateDirectory(signedFolder);
var signedPath = Path.Combine(signedFolder, Path.GetFileName(unsignedPath));
File.Copy(unsignedPath, signedPath, overwrite: true);
return signedPath;
}).ToArray();

return context.SignFiles(context.BaseFolder, binaries);
}
}

0 comments on commit 7226c5a

Please sign in to comment.