Skip to content

Conversation

hallipr
Copy link
Member

@hallipr hallipr commented Sep 23, 2025

What does this PR do?

  • Updates all build, test, package and release scripts to use a common build_info.json file
    • This file coordinates version numbers, package properties and platform details for all build artifacts
    • all other build and pack scripts should use build_info rather than pulling properties from project files
  • Removes the static build matrix
    • build_info.json also includes dynamically generated build and tests matrices
    • rather than special casing steps in yaml, we should update the build matrix in the script and use simple boolean variables to conditionally run pipeline steps
  • Updates the pack scripts to be server-generic. All ids and server specific settings that go into a package should be pulled from build_info.json, which is built using properties from the servers' project files

Sample build_info.json

GitHub issue number?

closes #53

Pre-merge Checklist

  • Required for All PRs
    • Read contribution guidelines
    • PR title clearly describes the change
    • Commit history is clean with descriptive messages (cleanup guide)
    • Added comprehensive tests for new/modified functionality
    • Updated servers/Azure.Mcp.Server/CHANGELOG.md and/or servers/Fabric.Mcp.Server/CHANGELOG.md for product changes (features, bug fixes, UI/UX, updated dependencies)
  • For MCP tool changes:
    • One tool per PR: This PR adds or modifies only one MCP tool for faster review cycles
    • Updated servers/Azure.Mcp.Server/README.md and/or servers/Fabric.Mcp.Server/README.md documentation
    • Updated command list in /docs/azmcp-commands.md and/or /docs/fabric-commands.md
    • For new or modified tool descriptions, ran ToolDescriptionEvaluator and obtained a score of 0.4 or more and a top 3 ranking for all related test prompts
  • Extra steps for Azure MCP Server tool changes:
    • Updated test prompts in /docs/e2eTestPrompts.md
    • 👉 For Community (non-Microsoft team member) PRs:
      • Security review: Reviewed code for security vulnerabilities, malicious code, or suspicious activities before running tests (crypto mining, spam, data exfiltration, etc.)
      • Manual tests run: added comment /azp run mcp - pullrequest - live to run Live Test Pipeline

@joshfree joshfree moved this from Untriaged to In Progress in Azure MCP Server Sep 23, 2025
@hallipr hallipr force-pushed the users/pahallis/metadata-json branch 17 times, most recently from 11811f5 to 43e55ed Compare September 30, 2025 18:40
@hallipr hallipr linked an issue Sep 30, 2025 that may be closed by this pull request
@hallipr hallipr force-pushed the users/pahallis/metadata-json branch 5 times, most recently from 107bb97 to 0e55b21 Compare September 30, 2025 21:24
@hallipr hallipr force-pushed the users/pahallis/metadata-json branch from 0e55b21 to 38feff4 Compare September 30, 2025 21:52
@hallipr
Copy link
Member Author

hallipr commented Oct 6, 2025

Also we should support pipeline tagging in the same way we do for unified pull request builds in the language repos, so that users can filter by server name in the tags dropdown for the pipeline.

I'll add a followup PR

@hallipr hallipr force-pushed the users/pahallis/metadata-json branch 2 times, most recently from af781a5 to d186241 Compare October 7, 2025 19:21
@joshfree joshfree added this to the 2025-10 milestone Oct 12, 2025
@hallipr hallipr force-pushed the users/pahallis/metadata-json branch from 3af3798 to 89e3351 Compare October 13, 2025 16:53
@hallipr hallipr requested review from conniey and g2vinay October 13, 2025 16:55
Copy link
Member

@weshaggard weshaggard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add some feedback but the main blocker is the use of the deleted matrix file that needs to be fixed.

@hallipr hallipr force-pushed the users/pahallis/metadata-json branch 2 times, most recently from 89d0038 to ca2572c Compare October 14, 2025 19:44
@hallipr hallipr force-pushed the users/pahallis/metadata-json branch from ca2572c to 4fa5e8d Compare October 14, 2025 20:16
Copy link
Member

@weshaggard weshaggard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changes look good but I don't want the release to fail the first time Fabric attempts to use it so please work with them to get naming figured out or opt them out of those stages if we don't have a value yet.

Copy link
Contributor

@scbedd scbedd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall definitely looks solid to me. I have some concerns around usage of member variables for which I left comments. After those resolve, will swap to approve.

If this turns out solid livetests etc we should get this in ASAP.

echo "vsce publish --azure-credential --packagePath ""$($baseName).vsix"" --manifestPath ""$($baseName).manifest"" --signaturePath ""$($baseName).signature.p7s"""
vsce publish --azure-credential --packagePath "$($baseName).vsix" --manifestPath "$($baseName).manifest" --signaturePath "$($baseName).signature.p7s"
echo "vsce publish --azure-credential --packagePath ""$baseName.vsix"" --manifestPath ""$baseName.manifest"" --signaturePath ""$baseName.signature.p7s"""
vsce publish --azure-credential --packagePath "$baseName.vsix" --manifestPath "$baseName.manifest" --signaturePath "$baseName.signature.p7s"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
vsce publish --azure-credential --packagePath "$baseName.vsix" --manifestPath "$baseName.manifest" --signaturePath "$baseName.signature.p7s"
vsce publish --azure-credential --packagePath "$($baseName.vsix)" --manifestPath "$($baseName.manifest)" --signaturePath "$($baseName.signature.p7s)"

These won't resolve in a pshell script as is right?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

npm install -g @vscode/vsce
echo "vsce publish --azure-credential --packagePath ""$($baseName).vsix"" --manifestPath ""$($baseName).manifest"" --signaturePath ""$($baseName).signature.p7s"""
vsce publish --azure-credential --packagePath "$($baseName).vsix" --manifestPath "$($baseName).manifest" --signaturePath "$($baseName).signature.p7s"
echo "vsce publish --azure-credential --packagePath ""$baseName.vsix"" --manifestPath ""$baseName.manifest"" --signaturePath ""$baseName.signature.p7s"""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
echo "vsce publish --azure-credential --packagePath ""$baseName.vsix"" --manifestPath ""$baseName.manifest"" --signaturePath ""$baseName.signature.p7s"""
echo "vsce publish --azure-credential --packagePath `"$($baseName.vsix)`" --manifestPath `"$($baseName.manifest)`" --signaturePath `"$($baseName.signature.p7s)`""

parameters:
DependsOn: Sign

- ${{ each os in split('linux|windows|macOS', '|') }}:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Putting a pin in this. I believe that Dozie is handling the different name of the OS in the build matrix in verify-packages.yml.

Will verify and come back to this.


if (!(Test-Path $BuildInfoPath)) {
LogError "Build info file $BuildInfoPath does not exist. Run eng/scripts/New-BuildInfo.ps1 to create it."
$exitCode = 1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should probably immediately bail here right?


Invoke-LoggedMsBuildCommand $command -GroupOutput

$package = [ordered]@{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am missing it in the large context of this PR. Where do we generate the package.json? I think you added it to the build of the csproj right?

param(
[string] $ServerName,
[switch] $Trimmed,
[switch] $NoTrimmed,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why change from Trimmed to NoTrimmed?

}

if ($exitCode -ne 0) {
exit $exitCode
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not worth it in this PR, but later on we should parse these common arguments (for BuildInfoJson at least) in a common verification function. LATER. We should merge this PR now 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

Build artifacts should have package-generic metadata

7 participants