From 05bb4b452a9dafa89f29e6113f2a0593b87f32f7 Mon Sep 17 00:00:00 2001 From: Logan Bussell false Date: Thu, 30 Nov 2023 17:20:49 -0800 Subject: [PATCH 1/4] Add new major version checklist --- .../releases/dotnet-major-version-release.md | 61 +++++++++++++++++++ ...{dotnet-release.md => dotnet-servicing.md} | 0 2 files changed, 61 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md rename .github/ISSUE_TEMPLATE/releases/{dotnet-release.md => dotnet-servicing.md} (100%) diff --git a/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md b/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md new file mode 100644 index 0000000000..4a72cd7645 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md @@ -0,0 +1,61 @@ +# New .NET Major Version Release + +.NET version being released: + +This issue is intended to stay open for the entire support duration of the above major .NET version. + +### Breaking changes +- For each breaking change made throughout development, file a new issue using the ".NET breaking change" template in the [dotnet/docs repo](https://github.com/dotnet/docs/issues/new/choose). +- List any breaking change issues created below: + +## Alpha +- [ ] Add new .NET version images to `nightly` branch + - Create new images + - Add entries for the new .NET versions in `manifest.versions.json` + - Add new images for the new .NET version in each repo in `manifest.json` + - Adjust existing templates or add new templates in `eng/dockerfile-templates/` if necessary + - If there are no major changes between .NET versions, the new images can share `runtime-deps` layers with the previous .NET version + - Include only the latest/LTS version of each operating system according to our [supported operating systems documentation](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md#operating-systems). + - If adding a new OS version, follow the guidelines in [new-distro-release.md](https://raw.githubusercontent.com/dotnet/dotnet-docker/main/.github/ISSUE_TEMPLATE/releases/new-distro-release.md) + - If PowerShell is not yet supported or functional on the new .NET version, file an issue at [PowerShell/PowerShell](https://github.com/PowerShell/PowerShell/issues) or link to an existing issue, exclude PowerShell from the new SDK images, and [file an issue](https://github.com/dotnet/dotnet-docker/issues/new/choose) to re-enable PowerShell in .NET Docker images + - Update tests + - Add new version info to [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs) + - Update the [test data](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs) to include the new distro version + - If various tests are not yet functional on the new .NET version, file issues on product team repos as necessary, disable the test with a link to the issue, and file an issue in the dotnet/dotnet-docker repo to re-enable the test + - Update readmes + - Update the [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates) to include the new distro version + - The new tags should be in a preview sub-table, like so: https://github.com/dotnet/dotnet-docker/blob/8fc28db4f706d81a1fd075f2c6b2ca514ae75c84/eng/mcr-tags-metadata-templates/aspnet-tags.yml#L1-L3 + - Update image size baselines + - Add new placeholder entries to the image size baselines in [tests/performance/](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/performance) + - Queue a build of the [dotnet-docker-nightly](https://dev.azure.com/dnceng/internal/_build?definitionId=359) pipeline targeting only the new images, for example with the variable: `imagebuilder.pathArgs: --path '*9.0*'` + - Inspect the image sizes by pulling the new images from the `dotnetdockerdev` ACR and update the baselines accordingly + - Move `latest` tags to the new .NET version + +## Preview 1 +- [ ] Merge new .NET version images from `nightly` branch to `main` + +## RC1 +- [ ] Update Featured Tags in main branch + - [ ] Move new version tags out of preview sub-tables in readmes +- [ ] Move .NET Docker projects to the new .NET version's TFM + - Example issue: https://github.com/dotnet/docker-tools/issues/1181 +- [ ] Update samples to new .NET version + - Consider creating new samples to feature new .NET or .NET Docker features + +## GA +- [ ] Move `latest` tags in `manifest.json` to the new version + - Relevant issue: https://github.com/dotnet/dotnet-docker/issues/2316 +- [ ] Add the new .NET version to the .NET Framework SDK image + - https://github.com/microsoft/dotnet-framework-docker/blob/6a3c9d048f75c1e69c0e1059564cd56a90bf9e3c/eng/dockerfile-templates/sdk/Dockerfile#L56-L59 +- [ ] Post a new announcement on the [GitHub Discussions page](https://github.com/dotnet/dotnet-docker/discussions/new?category=announcements) page and pin the announcement + - Include new .NET Docker features and breaking changes and defer to other official .NET documentation/announcements for other features + - Example announcement: https://github.com/dotnet/dotnet-docker/discussions/4995 +- [ ] If the new version is an LTS version, + +## EOL +- [ ] Remove all entries for the EOL .NET version in `manifest.json`, `manifest.versions.json`, [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs), [TestData.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs), [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates), and delete the Dockerfiles +- [ ] Search for and simplify conditions including the EOL .NET Version in the Dockerfile templates and tests +- [ ] Replace all references to the EOL .NET version in documentation with a new .NET version +- [ ] Remove the EOL .NET version from the .NET Framework SDK images + - https://github.com/microsoft/dotnet-framework-docker/blob/6a3c9d048f75c1e69c0e1059564cd56a90bf9e3c/eng/dockerfile-templates/sdk/Dockerfile#L56-L59 +- [ ] Post a new announcement on the [GitHub Discussions page](https://github.com/dotnet/dotnet-docker/discussions/new?category=announcements) diff --git a/.github/ISSUE_TEMPLATE/releases/dotnet-release.md b/.github/ISSUE_TEMPLATE/releases/dotnet-servicing.md similarity index 100% rename from .github/ISSUE_TEMPLATE/releases/dotnet-release.md rename to .github/ISSUE_TEMPLATE/releases/dotnet-servicing.md From 0608e7c2f4018d55929153421ff4d29b109520e1 Mon Sep 17 00:00:00 2001 From: Logan Bussell false Date: Tue, 5 Dec 2023 11:16:50 -0800 Subject: [PATCH 2/4] Updates based on code review --- .../releases/dotnet-major-version-release.md | 72 ++++++++++--------- 1 file changed, 40 insertions(+), 32 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md b/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md index 4a72cd7645..70dd1880d7 100644 --- a/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md +++ b/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md @@ -1,8 +1,9 @@ # New .NET Major Version Release -.NET version being released: - -This issue is intended to stay open for the entire support duration of the above major .NET version. +This document is a collection of tasks that need to be completed over the lifecycle of a .NET release. +Each checkbox represents an issue that should be filed. +File all issues at once when a new .NET version is in Alpha. +Add due dates to each of the issues so that we don't lose track of them. ### Breaking changes - For each breaking change made throughout development, file a new issue using the ".NET breaking change" template in the [dotnet/docs repo](https://github.com/dotnet/docs/issues/new/choose). @@ -10,52 +11,59 @@ This issue is intended to stay open for the entire support duration of the above ## Alpha - [ ] Add new .NET version images to `nightly` branch - - Create new images - - Add entries for the new .NET versions in `manifest.versions.json` - - Add new images for the new .NET version in each repo in `manifest.json` + - [ ] Create new images + - [ ] Add entries for the new .NET versions in `manifest.versions.json` + - [ ] Add new images for the new .NET version in each repo in `manifest.json` + - [ ] Move `latest` tags to the new .NET version + - [ ] Floating tags should have a `-preview` suffix (https://github.com/dotnet/dotnet-docker/issues/4117). For example: `9.0-preview`. + - For fixed tags, the `-alpha.1` suffixes that is part of the .NET version sufficient and no additional suffix is necessary - Adjust existing templates or add new templates in `eng/dockerfile-templates/` if necessary - If there are no major changes between .NET versions, the new images can share `runtime-deps` layers with the previous .NET version - Include only the latest/LTS version of each operating system according to our [supported operating systems documentation](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md#operating-systems). - If adding a new OS version, follow the guidelines in [new-distro-release.md](https://raw.githubusercontent.com/dotnet/dotnet-docker/main/.github/ISSUE_TEMPLATE/releases/new-distro-release.md) - If PowerShell is not yet supported or functional on the new .NET version, file an issue at [PowerShell/PowerShell](https://github.com/PowerShell/PowerShell/issues) or link to an existing issue, exclude PowerShell from the new SDK images, and [file an issue](https://github.com/dotnet/dotnet-docker/issues/new/choose) to re-enable PowerShell in .NET Docker images - - Update tests - - Add new version info to [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs) - - Update the [test data](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs) to include the new distro version + - [ ] Update tests + - [ ] Add new version info to [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs) + - [ ] Update the [test data](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs) to include the new distro version - If various tests are not yet functional on the new .NET version, file issues on product team repos as necessary, disable the test with a link to the issue, and file an issue in the dotnet/dotnet-docker repo to re-enable the test - - Update readmes - - Update the [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates) to include the new distro version + - [ ] Update readmes + - [ ] Update the [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates) to include the new distro version - The new tags should be in a preview sub-table, like so: https://github.com/dotnet/dotnet-docker/blob/8fc28db4f706d81a1fd075f2c6b2ca514ae75c84/eng/mcr-tags-metadata-templates/aspnet-tags.yml#L1-L3 - - Update image size baselines - - Add new placeholder entries to the image size baselines in [tests/performance/](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/performance) - - Queue a build of the [dotnet-docker-nightly](https://dev.azure.com/dnceng/internal/_build?definitionId=359) pipeline targeting only the new images, for example with the variable: `imagebuilder.pathArgs: --path '*9.0*'` - - Inspect the image sizes by pulling the new images from the `dotnetdockerdev` ACR and update the baselines accordingly - - Move `latest` tags to the new .NET version + - [ ] Update image size baselines + - [ ] Queue a build of the [dotnet-docker-nightly](https://dev.azure.com/dnceng/internal/_build?definitionId=359) pipeline + - [ ] Inspect the image sizes by pulling the new images from the `dotnetdocker` ACR and update the baselines accordingly ## Preview 1 - [ ] Merge new .NET version images from `nightly` branch to `main` ## RC1 -- [ ] Update Featured Tags in main branch - - [ ] Move new version tags out of preview sub-tables in readmes +- [ ] Switch to non-preview tagging pattern for new .NET version (https://github.com/dotnet/dotnet-docker/issues/4117) + - [ ] Remove preview suffix from tags in `manifest.json` and/or `manifest.versions.json` + - [ ] Move new version tags out of preview sub-tables in [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates) + - [ ] In [readme templates](https://github.com/dotnet/dotnet-docker/blob/main/eng/readme-templates/FeaturedTags.md): + - [ ] Switch Featured Tags from "(Preview)" to "(Release Candidate)" in `nightly` branch + - [ ] Add new .NET Version to Featured Tags as "(Release Candidate)" in `main` branch - [ ] Move .NET Docker projects to the new .NET version's TFM - Example issue: https://github.com/dotnet/docker-tools/issues/1181 - [ ] Update samples to new .NET version - Consider creating new samples to feature new .NET or .NET Docker features ## GA -- [ ] Move `latest` tags in `manifest.json` to the new version - - Relevant issue: https://github.com/dotnet/dotnet-docker/issues/2316 -- [ ] Add the new .NET version to the .NET Framework SDK image - - https://github.com/microsoft/dotnet-framework-docker/blob/6a3c9d048f75c1e69c0e1059564cd56a90bf9e3c/eng/dockerfile-templates/sdk/Dockerfile#L56-L59 -- [ ] Post a new announcement on the [GitHub Discussions page](https://github.com/dotnet/dotnet-docker/discussions/new?category=announcements) page and pin the announcement - - Include new .NET Docker features and breaking changes and defer to other official .NET documentation/announcements for other features - - Example announcement: https://github.com/dotnet/dotnet-docker/discussions/4995 -- [ ] If the new version is an LTS version, +- [ ] New .NET version GA tasks (one issue) + - [ ] Move `latest` tags in `manifest.json` to the new version + - Relevant issue: https://github.com/dotnet/dotnet-docker/issues/2316 + - [ ] Add the new .NET version to the .NET Framework SDK image + - https://github.com/microsoft/dotnet-framework-docker/blob/6a3c9d048f75c1e69c0e1059564cd56a90bf9e3c/eng/dockerfile-templates/sdk/Dockerfile#L56-L59 + - [ ] Post a new announcement on the [GitHub Discussions page](https://github.com/dotnet/dotnet-docker/discussions/new?category=announcements) page and pin the announcement + - Include new .NET Docker features and breaking changes and defer to other official .NET documentation/announcements for other features + - Example announcement: https://github.com/dotnet/dotnet-docker/discussions/4995 + - [ ] Update documentation as necessary to reference the new .NET version ## EOL -- [ ] Remove all entries for the EOL .NET version in `manifest.json`, `manifest.versions.json`, [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs), [TestData.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs), [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates), and delete the Dockerfiles -- [ ] Search for and simplify conditions including the EOL .NET Version in the Dockerfile templates and tests -- [ ] Replace all references to the EOL .NET version in documentation with a new .NET version -- [ ] Remove the EOL .NET version from the .NET Framework SDK images - - https://github.com/microsoft/dotnet-framework-docker/blob/6a3c9d048f75c1e69c0e1059564cd56a90bf9e3c/eng/dockerfile-templates/sdk/Dockerfile#L56-L59 -- [ ] Post a new announcement on the [GitHub Discussions page](https://github.com/dotnet/dotnet-docker/discussions/new?category=announcements) +- [ ] Remove EOL .NET version from `main` and `nightly` repos (one issue) + - [ ] Remove all entries for the EOL .NET version in `manifest.json`, `manifest.versions.json`, [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs), [TestData.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs), [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates), and delete the Dockerfiles + - [ ] Search for and simplify conditions including the EOL .NET Version in the Dockerfile templates and tests + - [ ] Replace all references to the EOL .NET version in documentation with a new .NET version + - [ ] Remove the EOL .NET version from the .NET Framework SDK images + - https://github.com/microsoft/dotnet-framework-docker/blob/6a3c9d048f75c1e69c0e1059564cd56a90bf9e3c/eng/dockerfile-templates/sdk/Dockerfile#L56-L59 + - [ ] Post a new announcement on the [GitHub Discussions page](https://github.com/dotnet/dotnet-docker/discussions/new?category=announcements) From 543b7bc9b76b7e1a8a17a29aa2347830440c4994 Mon Sep 17 00:00:00 2001 From: Logan Bussell false Date: Wed, 6 Dec 2023 12:47:41 -0800 Subject: [PATCH 3/4] Address code review --- ...major-version-release.md => dotnet-release-lifecycle.md} | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) rename .github/ISSUE_TEMPLATE/releases/{dotnet-major-version-release.md => dotnet-release-lifecycle.md} (94%) diff --git a/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md b/.github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md similarity index 94% rename from .github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md rename to .github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md index 70dd1880d7..300df76c2e 100644 --- a/.github/ISSUE_TEMPLATE/releases/dotnet-major-version-release.md +++ b/.github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md @@ -1,7 +1,7 @@ -# New .NET Major Version Release +# New .NET Version Release Lifecycle This document is a collection of tasks that need to be completed over the lifecycle of a .NET release. -Each checkbox represents an issue that should be filed. +Each top-level checkbox represents an issue that should be filed. File all issues at once when a new .NET version is in Alpha. Add due dates to each of the issues so that we don't lose track of them. @@ -47,6 +47,8 @@ Add due dates to each of the issues so that we don't lose track of them. - Example issue: https://github.com/dotnet/docker-tools/issues/1181 - [ ] Update samples to new .NET version - Consider creating new samples to feature new .NET or .NET Docker features +- [ ] Review supported OS versions for new .NET version before release + - Include only the latest/LTS version of each operating system according to our [supported operating systems documentation](https://github.com/dotnet/dotnet-docker/blob/main/documentation/supported-platforms.md#operating-systems). ## GA - [ ] New .NET version GA tasks (one issue) From f8e2bf0af20fe01a8a09485566714ab9da8d6913 Mon Sep 17 00:00:00 2001 From: Logan Bussell Date: Thu, 7 Dec 2023 09:37:55 -0800 Subject: [PATCH 4/4] Update EOL wording --- .github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md b/.github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md index 300df76c2e..4b5367ad02 100644 --- a/.github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md +++ b/.github/ISSUE_TEMPLATE/releases/dotnet-release-lifecycle.md @@ -2,7 +2,8 @@ This document is a collection of tasks that need to be completed over the lifecycle of a .NET release. Each top-level checkbox represents an issue that should be filed. -File all issues at once when a new .NET version is in Alpha. +File all release and pre-release issues at once when a new .NET version is in Alpha. +File an issue for removing an EOL .NET version *after* its last release, so that it can be removed before the next release. Add due dates to each of the issues so that we don't lose track of them. ### Breaking changes @@ -62,7 +63,7 @@ Add due dates to each of the issues so that we don't lose track of them. - [ ] Update documentation as necessary to reference the new .NET version ## EOL -- [ ] Remove EOL .NET version from `main` and `nightly` repos (one issue) +- [ ] Remove EOL .NET version from `main` and `nightly` branches (one issue) - [ ] Remove all entries for the EOL .NET version in `manifest.json`, `manifest.versions.json`, [ImageVersion.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/ImageVersion.cs), [TestData.cs](https://github.com/dotnet/dotnet-docker/blob/nightly/tests/Microsoft.DotNet.Docker.Tests/TestData.cs), [MCR tags metadata templates](https://github.com/dotnet/dotnet-docker/tree/main/eng/mcr-tags-metadata-templates), and delete the Dockerfiles - [ ] Search for and simplify conditions including the EOL .NET Version in the Dockerfile templates and tests - [ ] Replace all references to the EOL .NET version in documentation with a new .NET version