diff --git a/AGENTS.md b/AGENTS.md index 77fbe55..de59b1b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -9,7 +9,7 @@ container (`ghcr.io/nullean/release-notes`) and a GitHub Action (`action.yml`) t | Path | What | |---|---| -| `src/release-notes` | the tool (net8.0 and net10.0), a `Nullean.Argh` CLI; `ReleaseNotesCommands.cs` holds the commands | +| `src/release-notes` | the tool (net10.0 and net11.0), a `Nullean.Argh` CLI; `ReleaseNotesCommands.cs` holds the commands | | `src/release-notes/GitHubReleaseClient.cs` | the GitHub writes (releases, labels), source-generated JSON instead of Octokit | | `build/scripts` | the F# build ([Nullean.Make.Fs](https://www.nuget.org/packages/Nullean.Make.Fs), net11.0) the `mise` tasks and CI call | | `build/keys` | the strong-name key the tool's own assembly is signed with | @@ -17,8 +17,7 @@ container (`ghcr.io/nullean/release-notes`) and a GitHub Action (`action.yml`) t ## Commands -mise installs the SDK pinned in `global.json` (plus the net10.0 runtime nupkg-validator runs on). Run -everything through it: +mise installs the SDK pinned in `global.json`. Run everything through it: ```bash mise run build # build the solution diff --git a/Directory.Packages.props b/Directory.Packages.props index 0124cdd..0cbd354 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,10 +6,8 @@ - - - - + + @@ -18,6 +16,6 @@ - + diff --git a/README.md b/README.md index 205b1a7..43af66e 100644 --- a/README.md +++ b/README.md @@ -127,7 +127,7 @@ The tool ships as one package per platform. Install the root package; the .NET S |---|---|---| | [`release-notes`](src/release-notes/README.md) | the tool; points the SDK at the package for your platform | [![NuGet](https://img.shields.io/nuget/v/release-notes?style=flat-square)](https://www.nuget.org/packages/release-notes) | | `release-notes.` | the native-AOT build for `linux-x64`, `linux-arm64`, `win-x64`, `win-arm64` and `osx-arm64` | [![NuGet](https://img.shields.io/nuget/v/release-notes.linux-x64?style=flat-square)](https://www.nuget.org/packages/release-notes.linux-x64) | -| `release-notes.any` | the framework-dependent fallback (net8.0, net10.0) for every other platform | [![NuGet](https://img.shields.io/nuget/v/release-notes.any?style=flat-square)](https://www.nuget.org/packages/release-notes.any) | +| `release-notes.any` | the framework-dependent fallback (net10.0, net11.0) for every other platform | [![NuGet](https://img.shields.io/nuget/v/release-notes.any?style=flat-square)](https://www.nuget.org/packages/release-notes.any) | ## Learn more diff --git a/build/scripts/Paths.fs b/build/scripts/Paths.fs index c23d1d1..eefef63 100644 --- a/build/scripts/Paths.fs +++ b/build/scripts/Paths.fs @@ -12,7 +12,7 @@ let AotRuntimeIdentifiers = ["linux-x64"; "linux-arm64"; "win-x64"; "win-arm64"; /// Must mirror release-notes.csproj's TargetFrameworks. Used to patch the signed managed dll back /// into the packed 'any' fallback for every TFM it ships — see fixAnyPackageSigning in Targets.fs. -let ManagedTargetFrameworks = ["net8.0"; "net10.0"] +let ManagedTargetFrameworks = ["net10.0"; "net11.0"] let Root = let mutable dir = DirectoryInfo(".") diff --git a/build/scripts/Program.fs b/build/scripts/Program.fs index ae72e1e..ece3642 100644 --- a/build/scripts/Program.fs +++ b/build/scripts/Program.fs @@ -48,8 +48,8 @@ let main argv = for project in Directory.EnumerateFiles("src", "*.?sproj", SearchOption.AllDirectories) do sh $"dotnet clean {project} -c Release -v q" } | Build -> command { - composes [Clean] - executes (shell { sh $"dotnet build -c Release" }) } + composes [Clean] } + |> executes { sh $"dotnet build -c Release" } // there are no tests, so ci is pack: build, then create, validate and diff the packages | Pack -> command { requires [Build]; composes [Generatepackages; Validatepackages; Generateapichanges] } | Ci -> command { requires [Pack]; composes [] } @@ -107,13 +107,13 @@ let main argv = // works, with no ghcr.io credentials configured there. Only the build job, which does log in, passes // --push. | Publishcontainers -> target [] { - let baseImage = "mcr.microsoft.com/dotnet/runtime-deps:10.0-noble-chiseled" + let baseImage = "mcr.microsoft.com/dotnet/runtime-deps:11.0-resolute-chiseled" // MSBuild reads the quotes: without them the tags' `;` would split the property let tags = $"ContainerImageTags=\"{Packaging.containerImageTags Versions.current.Value}\"" if push.Value then - sh $"dotnet publish {toolProject} -c Release -f net10.0 -r linux-x64 /t:PublishContainer -p DebugType=none -p ContainerBaseImage={baseImage} -p ContainerRepository={Paths.Repository} -p {tags} -p ContainerUser=1001:1001 -p ContainerRegistry=ghcr.io" + sh $"dotnet publish {toolProject} -c Release -f net11.0 -r linux-x64 /t:PublishContainer -p DebugType=none -p ContainerBaseImage={baseImage} -p ContainerRepository={Paths.Repository} -p {tags} -p ContainerUser=1001:1001 -p ContainerRegistry=ghcr.io" else - sh $"dotnet publish {toolProject} -c Release -f net10.0 -r linux-x64 /t:PublishContainer -p DebugType=none -p ContainerBaseImage={baseImage} -p ContainerRepository={Paths.Repository} -p {tags} -p ContainerUser=1001:1001" } + sh $"dotnet publish {toolProject} -c Release -f net11.0 -r linux-x64 /t:PublishContainer -p DebugType=none -p ContainerBaseImage={baseImage} -p ContainerRepository={Paths.Repository} -p {tags} -p ContainerUser=1001:1001" } // The framework-dependent build cannot catch what trimming breaks: #47 broke only the native-AOT binary, where // Octokit's reflection-based JSON returned nothing or threw. So this publishes that binary and reads releases @@ -124,7 +124,7 @@ let main argv = let rid = RuntimeInformation.RuntimeIdentifier let publishDirectory = Path.Combine(Paths.Output.FullName, "aot-smoke") let publish = Paths.RootRelative publishDirectory - sh $"dotnet publish {toolProject} -c Release -f net10.0 -r {rid} -o {publish}" + sh $"dotnet publish {toolProject} -c Release -f net11.0 -r {rid} -o {publish}" let executable = if OperatingSystem.IsWindows() then $"{Paths.ToolName}.exe" else Paths.ToolName let binary = Paths.RootRelative <| Path.Combine(publishDirectory, executable) // Make.Fs quotes each interpolated hole as one argument, so --token stays in the command text diff --git a/mise.toml b/mise.toml index a803641..7b45ff9 100644 --- a/mise.toml +++ b/mise.toml @@ -1,6 +1,6 @@ # Bootstraps the toolchain and is the one entry point: `mise run `, the same task names in every nullean repo. # The .NET SDK version lives only in global.json: the first dotnet entry reads it from there (sdk.version is the first -# "version" key). The net10.0 runtime is listed after it because nupkg-validator runs on net10.0. +# "version" key). List further runtimes after it when tests run on older target frameworks too. [env] DOTNET_NOLOGO = "1" @@ -8,7 +8,7 @@ DOTNET_CLI_TELEMETRY_OPTOUT = "1" DOTNET_SKIP_FIRST_TIME_EXPERIENCE = "1" [tools] -dotnet = ["""{{ read_file(path='global.json') | split(pat='"version"') | nth(n=1) | split(pat='"') | nth(n=1) }}""", "10"] +dotnet = ["""{{ read_file(path='global.json') | split(pat='"version"') | nth(n=1) | split(pat='"') | nth(n=1) }}"""] gh = "latest" zizmor = "1" diff --git a/src/release-notes/release-notes.csproj b/src/release-notes/release-notes.csproj index c0f27b3..859ef6d 100644 --- a/src/release-notes/release-notes.csproj +++ b/src/release-notes/release-notes.csproj @@ -2,7 +2,7 @@ Exe - net8.0;net10.0 + net10.0;net11.0 release-notes ReleaseNotes enable @@ -22,7 +22,7 @@ The root package's DotnetToolSettings.xml (v2) maps each RID to its per-RID package. Installing requires the .NET 10 SDK or greater. --> linux-x64;linux-arm64;win-x64;win-arm64;osx-arm64;any - true