diff --git a/Tasks/PackageTask.cs b/Tasks/PackageTask.cs index 7cae42c..8cf88a3 100644 --- a/Tasks/PackageTask.cs +++ b/Tasks/PackageTask.cs @@ -17,9 +17,10 @@ public override async Task RunAsync(BuildContext context) // local artifacts so we can test/run this locally as well if (context.BuildSystem().IsRunningOnGitHubActions) { + context.Information("Running on github actions, attempting to download artifacts from previous publish step"); string[] requiredRids = context.IsUniversalBinary ? - ["windows-x64", "linux-x64", "linux-arm64", "osx"] : - ["windows-x64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64"]; + ["windows-x64", "windows-arm64", "linux-x64", "linux-arm64", "osx"] : + ["windows-x64", "windows-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64"]; foreach (var rid in requiredRids) { @@ -27,20 +28,29 @@ public override async Task RunAsync(BuildContext context) if (context.DirectoryExists(directoryPath)) continue; + context.Information($"Attempting to download artifacts for {rid} to {directoryPath}"); context.CreateDirectory(directoryPath); try { await context.BuildSystem().GitHubActions.Commands.DownloadArtifact($"artifacts-{rid}", directoryPath); } - catch { } + catch (Exception ex) + { + context.Warning($"Failed to download artifacts for {rid}, exception: {ex}"); + } } } else { + context.Information("Not running on github actions, copying local artifacts"); string rid = string.Empty; if (context.IsRunningOnWindows()) { - rid = "windows-x64"; + rid = RuntimeInformation.ProcessArchitecture switch + { + Architecture.Arm or Architecture.Arm64 => "windows-arm64", + _ => "windows-x64" + }; } else if (context.IsRunningOnLinux()) { @@ -144,4 +154,4 @@ private static async Task SaveEmbeddedResourceAsync(string resourceName, string await stream.CopyToAsync(writer); writer.Close(); } -} \ No newline at end of file +} diff --git a/Tasks/PublishToolTask.cs b/Tasks/PublishToolTask.cs index 8779196..75baaf2 100644 --- a/Tasks/PublishToolTask.cs +++ b/Tasks/PublishToolTask.cs @@ -28,6 +28,20 @@ public override async Task RunAsync(BuildContext context) var copyToDir = $"artifacts-{rid}"; if (context.BuildSystem().IsRunningOnGitHubActions) { + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) + { + // we need to upload each rid of windows separately. + var directories = Directory.GetDirectories(context.ArtifactsDir, "windows-*"); + if (directories.Any()) + { + foreach (var dir in directories) + { + var dirName = new DirectoryInfo(dir).Name; + await context.BuildSystem().GitHubActions.Commands.UploadArtifact(DirectoryPath.FromString(dir), $"artifacts-{dirName}"); + } + return; + } + } await context.BuildSystem().GitHubActions.Commands.UploadArtifact(DirectoryPath.FromString(context.ArtifactsDir), copyToDir); } else @@ -41,4 +55,4 @@ public override async Task RunAsync(BuildContext context) } } } -} \ No newline at end of file +}