Skip to content

Conversation

@adamint
Copy link
Member

@adamint adamint commented Sep 19, 2025

Description

Adds a new stage that builds, signs, and publishes the extension vsix.

@radical

Checklist

  • Is this feature complete?
    • Yes. Ready to ship.
    • No. Follow-up changes expected.
  • Are you including unit tests for the changes and scenario tests if relevant?
    • Yes
    • No
  • Did you add public API?
    • Yes
      • If yes, did you have an API Review for it?
        • Yes
        • No
      • Did you add <remarks /> and <code /> elements on your triple slash comments?
        • Yes
        • No
    • No
  • Does the change make any security assumptions or guarantees?
    • Yes
      • If yes, have you done a threat model and had a security review?
        • Yes
        • No
    • No
  • Does the change require an update in our Aspire docs?

@adamint adamint requested review from Copilot and radical September 19, 2025 03:47
@github-actions
Copy link
Contributor

github-actions bot commented Sep 19, 2025

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 11504

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 11504"

@github-actions github-actions bot added the area-engineering-systems infrastructure helix infra engineering repo stuff label Sep 19, 2025
Copy link
Contributor

Copilot AI left a 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 sets up a CI/CD pipeline for building, signing, and publishing the VS Code extension. The changes introduce a new pipeline stage that handles the complete extension build process including dependency installation, localization, packaging, and code signing.

Key changes:

  • Adds a new "build_sign_extension" stage to the Azure DevOps pipeline that runs before the native build stage
  • Creates a comprehensive build template for the VS Code extension with Node.js setup, dependency management, and VSIX packaging
  • Configures code signing for .vsix files using the VsixSHA2 certificate

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
eng/pipelines/azure-pipelines.yml Adds new pipeline stage for extension build and sign process
eng/pipelines/templates/BuildExtension.yml Complete build template with Node.js setup, yarn operations, VSIX packaging, and signing
eng/Signing.props Configures .vsix file signing with VsixSHA2 certificate and includes extension artifacts in signing targets
extension/loc/.gitignore Removes gitignore entry for xliff directory

@adamint adamint requested review from joperezr and radical September 22, 2025 15:52
@adamint
Copy link
Member Author

adamint commented Sep 22, 2025

Copy link
Member

@radical radical left a comment

Choose a reason for hiding this comment

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

This is looking good. Just have some feedback.

@dotnet-policy-service dotnet-policy-service bot added the needs-author-action An issue or pull request that requires more info or actions from the author. label Sep 22, 2025
@dotnet-policy-service dotnet-policy-service bot removed the needs-author-action An issue or pull request that requires more info or actions from the author. label Sep 22, 2025
@radical
Copy link
Member

radical commented Sep 23, 2025

<ExtensionSrcDir>$(MSBuildThisFileDirectory)</ExtensionSrcDir>
</PropertyGroup>

<Target Name="BuildAndPackageExtension" BeforeTargets="Build" DependsOnTargets="CheckYarnInstalled;CheckVsceInstalled">
Copy link
Member

Choose a reason for hiding this comment

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

For future PRs it would be useful to add Inputs/Outputs to the targets, so this can be skipped on incremental builds. It would be useful if you are doing it locally.

@adamint adamint merged commit ad07d53 into dotnet:main Sep 23, 2025
311 checks passed
@dotnet-policy-service dotnet-policy-service bot added this to the 9.6 milestone Sep 23, 2025
Copilot AI pushed a commit that referenced this pull request Sep 24, 2025
* 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>
joperezr pushed a commit that referenced this pull request Sep 25, 2025
…1618)

* Initial plan

* Set up extension build and sign pipeline (#11504)

* 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>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Adam Ratzman <adam@adamratzman.com>
Co-authored-by: Ankit Jain <radical@gmail.com>
/p:Sign=$sign `
/p:Publish=$publish `
/p:RestoreStaticGraphEnableBinaryLogger=$binaryLog `
/p:BuildExtension=$buildExtension `
Copy link
Member

Choose a reason for hiding this comment

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

This file (and build.sh) shouldn't have been changed for this, as we shouldn't touch files under eng\common. Those get overwritten by arcade each time we update, so this shouldn't be modified, and instead we should change the files under eng\build.ps1/sh. Last night we took an arcade update which broke the build as these scripts where replaced.

cc: @adamint @radical
Fyi: @davidfowl who was asking about this.

Copy link
Member

Choose a reason for hiding this comment

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

I fixed that up in the update-arcade Pr.

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

Labels

area-engineering-systems infrastructure helix infra engineering repo stuff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants