[release/9.5] Cherry-pick extension build and sign pipeline setup#11618
[release/9.5] Cherry-pick extension build and sign pipeline setup#11618joperezr merged 2 commits intorelease/9.5from
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 <radical@gmail.com>
|
🚀 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.
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" |
There was a problem hiding this comment.
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" /> |
There was a problem hiding this comment.
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 adam@adamratzman.com
💡 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.