Add AmbientMetadata.Build component#6623
Conversation
|
I love porting until I realize my commit history is lost. 🤣 |
src/Libraries/Microsoft.Extensions.AmbientMetadata.Build/BuildMetadata.cs
Outdated
Show resolved
Hide resolved
…hub.com/evgenyfedorov2/dotnet-extensions into users/evgenyfedorov2/add_build_metadata
KalleOlaviNiemitalo
left a comment
There was a problem hiding this comment.
What's the purpose of the empty src/Libraries/Microsoft.Extensions.AmbientMetadata.Build/Microsoft.Extensions.AmbientMetadata.Build.json file?
src/Generators/Microsoft.Gen.BuildMetadata/BuildMetadataGenerator.cs
Outdated
Show resolved
Hide resolved
src/Generators/Microsoft.Gen.BuildMetadata/Microsoft.Gen.BuildMetadata.csproj
Outdated
Show resolved
Hide resolved
Removed :) |
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a new AmbientMetadata.Build component that provides automatic build metadata collection from CI/CD pipelines. The component uses source generation to extract build information at compile time and register it in the dependency injection container as IOptions.
Key changes:
- New BuildMetadata class with properties for build ID, number, branch name, and source version
- Source generator that reads MSBuild properties and generates configuration extensions
- Support for both Azure DevOps and GitHub Actions CI environments
Reviewed Changes
Copilot reviewed 20 out of 24 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Libraries/Microsoft.Extensions.AmbientMetadata.Build/BuildMetadata.cs | Defines the core data model for build metadata |
| src/Generators/Microsoft.Gen.BuildMetadata/BuildMetadataGenerator.cs | Main source generator that creates build metadata extensions |
| src/Libraries/Microsoft.Extensions.AmbientMetadata.Build/BuildMetadataServiceCollectionExtensions.cs | Extension methods for registering BuildMetadata in DI container |
| src/Libraries/Microsoft.Extensions.AmbientMetadata.Build/buildTransitive/Microsoft.Extensions.AmbientMetadata.Build.props | MSBuild properties file that maps CI environment variables to build properties |
| test/Libraries/Microsoft.Extensions.AmbientMetadata.Build.Tests/ | Unit tests for the build metadata functionality |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
...s/Microsoft.Extensions.AmbientMetadata.Build.Tests/ConfigurationBindingQuirkBehaviorTests.cs
Outdated
Show resolved
Hide resolved
...s/Microsoft.Extensions.AmbientMetadata.Build.Tests/ConfigurationBindingQuirkBehaviorTests.cs
Outdated
Show resolved
Hide resolved
…s/ConfigurationBindingQuirkBehaviorTests.cs Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 20 out of 24 changed files in this pull request and generated 2 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
...sions.AmbientMetadata.Build/buildTransitive/Microsoft.Extensions.AmbientMetadata.Build.props
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Pull Request Overview
Copilot reviewed 20 out of 24 changed files in this pull request and generated 3 comments.
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
...s/Microsoft.Extensions.AmbientMetadata.Build.Tests/ConfigurationBindingQuirkBehaviorTests.cs
Show resolved
Hide resolved
...s/Microsoft.Extensions.AmbientMetadata.Build.Tests/ConfigurationBindingQuirkBehaviorTests.cs
Show resolved
Hide resolved
src/Generators/Microsoft.Gen.BuildMetadata/BuildMetadataGenerator.cs
Outdated
Show resolved
Hide resolved
src/Generators/Microsoft.Gen.BuildMetadata/AnalyzerConfigOptionsExtensions.cs
Outdated
Show resolved
Hide resolved
src/Generators/Microsoft.Gen.BuildMetadata/BuildMetadataGenerator.cs
Outdated
Show resolved
Hide resolved
src/Generators/Microsoft.Gen.BuildMetadata/BuildMetadataGenerator.cs
Outdated
Show resolved
Hide resolved
src/Libraries/Microsoft.Extensions.AmbientMetadata.Build/README.md
Outdated
Show resolved
Hide resolved
…hub.com/evgenyfedorov2/dotnet-extensions into users/evgenyfedorov2/add_build_metadata
Adding a brand new component - Build metadata, which automatically grabs build information from the CI/CD pipelines, deserializes it into a strong type
BuildMetadataand registers it in Dependency Injection container asIOptions<BuildMetadata>.The component uses source generation to collect build information and immediately express it via C# code.
Initially, only GitHub Actions and Azure DevOps are supported
Microsoft Reviewers: Open in CodeFlow