Skip to content

Proposed tasks to improve the OOB nuget build process in servicing branches #81974

Closed
@carlossanlop

Description

@carlossanlop

The following items were discussed with @ViktorHofer and @smasher164 to improve the overall experience of servicing code from an OOB package.

Resetting GeneratePackageOnBuild to false

Currently, we reset the <GeneratePackageOnBuild> property of OOB csproj files to false in the branding PRs that get created every month when the servicing branches are opened.

If someone submits a servicing PR that modifies a package that depends on another OOB package that had its version bumped the previous month, the CI will start showing a failure in AllConfigurations stating that the nuget dependency is not found in nuget.org.

This happens because the nuget packages created the previous month have not yet been pushed to nuget (this is expected) due to the previous month's GA date (which is the day we push them) happening after the current month's Code Complete date.

The problem gets worse if we end up merging such PR, because now the failure propagates to the servicing rolling builds and subsequent PRs.

Here is an example: #81914

To prevent this problem in the future, we have decided to separate branding from resetting the property. Here are two tasks to achieve this:

  • We will write a GitHub action to automatically create a PR that finds all the csproj files under src/libraries that belong to OOB packages, and change <GeneratePackageOnBuild> to false.
  • We will trigger such GitHub action at the same time as the branding PRs are created. We would like to modify the branding scripts created by @vseanreesermsft to achieve this.

These PRs would be the last ones we would merge on the Code Complete day. We will also be able to consider the official closing of the servicing branches for that month. Doing this will prevent having the servicing rolling builds and the PR CI runs in red due to nuget failures. Note: we might have some servicing rolling builds failing, but once the nuget packages get pushed, they should go away. Additionally, we will request the possibility of aligning the GA and Code Complete dates, to prevent red builds completely.

Fail when a Microsoft.Windows.Compatibility dependency is modified

The M.W.C. package is a package with no source code that depends on a bunch of other packages. If a new version of one of its dependencies gets built, we need to make sure to also build a new version of M.W.C., and push both new packages to nuget. We currently don't have an easy way to remind ourselves to do this, and it has already happened in the past that we forget to build M.W.C. and we only hear about it after a customer asks for the update.

To prevent forgetting, we have decided to take some steps:

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions