diff --git a/build/scripts/Targets.fs b/build/scripts/Targets.fs index e11cb4f..5a6add8 100644 --- a/build/scripts/Targets.fs +++ b/build/scripts/Targets.fs @@ -12,7 +12,16 @@ open ProcNet let exec binary args = Proc.Exec (binary, args |> List.toArray) -let private restoreTools = lazy(exec "dotnet" ["tool"; "restore"]) +/// dotnet/sdk#53783: on a cold tool-resolver cache (every fresh CI runner, every fresh container), +/// restoring 2+ RID-specific tool packages in one manifest can misattribute one package's +/// DotnetToolSettings.xml to another, failing with "The command ... is not contained in the +/// package ...". The cache is warm after the first attempt, so a bare retry always succeeds - +/// see https://github.com/dotnet/sdk/issues/53783. +let private restoreTools = + lazy( + try exec "dotnet" ["tool"; "restore"] + with _ -> exec "dotnet" ["tool"; "restore"] + ) let private currentVersion = lazy( restoreTools.Value |> ignore @@ -104,7 +113,11 @@ let private generateApiChanges (arguments:ParseResults) = let args = [ "diff"; - sprintf "previous-nuget|%s|%s|net8.0" Paths.ToolName currentVersion; + // The plain "assembly-differ" package id is just a DotnetToolSettings.xml v2 shim pointing + // at per-RID sub-packages (see generatePackages below) - it ships no managed assembly of + // its own, so NuGetAssemblyProvider would find 0 assemblies there. The portable, signed + // managed build lives in "assembly-differ.any" instead. + sprintf "previous-nuget|%s.any|%s|net8.0" Paths.ToolName currentVersion; sprintf "directory|src/%s/bin/Release/net10.0" Paths.ToolName; "--target"; Paths.ToolName; "-f"; "github-comment"; "--output"; output ] @@ -120,11 +133,12 @@ let private generateReleaseNotes (arguments:ParseResults) = | None -> [] | Some token -> ["--token"; token;] let releaseNotesArgs = - (Paths.Repository.Split("/") |> Seq.toList) + ["generate"] + @ (Paths.Repository.Split("/") |> Seq.toList) @ ["--version"; currentVersion - "--label"; "enhancement"; "New Features" - "--label"; "bug"; "Bug Fixes" - "--label"; "documentation"; "Docs Improvements" + "--label"; "enhancement=New Features" + "--label"; "bug=Bug Fixes" + "--label"; "documentation=Docs Improvements" ] @ tokenArgs @ ["--output"; output] @@ -139,9 +153,9 @@ let private createReleaseOnGithub (arguments:ParseResults) = let releaseNotes = Paths.RootRelative <| Path.Combine(Paths.Output.FullName, sprintf "release-notes-%s.md" currentVersion) let breakingChanges = Paths.RootRelative <| Path.Combine(Paths.Output.FullName, "github-breaking-changes-comments.md") let releaseArgs = - (Paths.Repository.Split("/") |> Seq.toList) - @ ["create-release" - "--version"; currentVersion + ["create-release"] + @ (Paths.Repository.Split("/") |> Seq.toList) + @ ["--version"; currentVersion "--body"; releaseNotes; "--body"; breakingChanges; ] @ tokenArgs diff --git a/build/scripts/scripts.fsproj b/build/scripts/scripts.fsproj index 461477f..066c031 100644 --- a/build/scripts/scripts.fsproj +++ b/build/scripts/scripts.fsproj @@ -8,7 +8,7 @@ - + diff --git a/dotnet-tools.json b/dotnet-tools.json index 75d5d13..e886ed7 100644 --- a/dotnet-tools.json +++ b/dotnet-tools.json @@ -10,7 +10,7 @@ "rollForward": false }, "release-notes": { - "version": "0.10.0", + "version": "0.11.0", "commands": [ "release-notes" ],