-
Notifications
You must be signed in to change notification settings - Fork 707
[release/9.5] Cherry-pick extension build and sign pipeline setup #11618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[release/9.5] Cherry-pick extension build and sign pipeline setup #11618
Conversation
* first try extension CI * move above other stages * install vsce globally before package * explicitly publish extension * try add signing * try #2 * Revert "try #2" This reverts commit 8006a85. * try to fix sign * try with artifacts packages dir property * remove verification * clean up * pr suggestions * run stages in parallel * see if this runs in parallel * add restore back * rename binlog * remove extra upload step * Move building extension to msbuild from the scripts. And always build extension on the internal pipeline * fix typo * fix build * Don't try to parse errors and warnings from yarn/npm invocations. Only use the exit code to determine success or failure * try publishing vsix * update paths * update paths 2 * Revert "update paths 2" This reverts commit e178308. * fix path to publish..? --------- Co-authored-by: Ankit Jain <[email protected]>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 11618Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 11618" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR cherry-picks infrastructure changes to enable automated VS Code extension building and signing as part of the standard CI/CD pipeline. It introduces proper MSBuild integration for extension compilation, packaging, and dependency verification.
Key changes:
- Replaced shell script extension building with MSBuild-based approach for better integration
- Added CI/CD pipeline support for Node.js tooling (yarn, vsce) and extension artifact publishing
- Enhanced signing configuration to properly handle
.vsixextension packages
Reviewed Changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| extension/Extension.proj | New MSBuild project handling extension compilation, packaging, and tooling validation |
| extension/loc/.gitignore | Removed obsolete gitignore file |
| eng/pipelines/azure-pipelines.yml | Added Node.js 20.x, yarn, and vsce installation steps |
| eng/pipelines/templates/BuildAndTest.yml | Added extension building flag and artifact publishing |
| eng/common/build.sh | Removed shell-based extension building logic, added MSBuild property |
| eng/common/build.ps1 | Removed PowerShell-based extension building logic, added MSBuild property |
| eng/Signing.props | Added .vsix signing configuration and artifact inclusion |
| eng/Build.props | Added conditional extension project inclusion |
| <MakeDir Directories="$(ArtifactsPackagesDir)\vscode" /> | ||
|
|
||
| <!-- Package extension --> | ||
| <Exec Command="vsce package --pre-release --out $(ArtifactsPackagesDir)\vscode\aspire-vscode-$(_ExtractedVersion).vsix" |
Copilot
AI
Sep 25, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The hardcoded Windows-style path separator \ will cause issues on Linux/macOS. Use MSBuild's path normalization or cross-platform path separators.
| <Exec Command="yarn compile" WorkingDirectory="$(ExtensionSrcDir)" IgnoreStandardErrorWarningFormat="true" /> | ||
|
|
||
| <!-- Make extension directory --> | ||
| <MakeDir Directories="$(ArtifactsPackagesDir)\vscode" /> |
Copilot
AI
Sep 25, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The hardcoded Windows-style path separator \ should be replaced with MSBuild's $([MSBuild]::NormalizePath()) or use forward slashes for cross-platform compatibility.
| <MakeDir Directories="$(ArtifactsPackagesDir)\vscode" /> | |
| <MakeDir Directories="$([MSBuild]::NormalizePath($(ArtifactsPackagesDir), 'vscode'))" /> |
This PR cherry-picks commit
ad07d5314c9115b9db413b7372e0a6502844df6cwhich sets up the extension build and sign pipeline infrastructure for the VS Code extension.Changes included
Extension Build Infrastructure
extension/Extension.proj- New MSBuild project that handles VS Code extension compilation, packaging, and dependency verification.vsixpackage generation with pre-release versioning supportCI/CD Pipeline Enhancements
eng/pipelines/azure-pipelines.yml) to install Node.js 20.x, yarn, and vsce globallyeng/Signing.propsBuild System Integration
eng/Build.propsto conditionally include extension building viaBuildExtension=truepropertyeng/common/build.ps1andeng/common/build.sh) by moving extension-specific logic to MSBuildextension/loc/.gitignorefileBenefits
This infrastructure enables:
The changes maintain backward compatibility - extension building is conditional and only enabled when explicitly requested via the
BuildExtensionproperty.Original PR: #11504
Original Author: Adam Ratzman [email protected]
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.