Skip to content
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e1d5002
feat: npm package build and release pipelines
tnaum-ms May 27, 2026
aca95e6
fix: finalize npm package build and release pipelines
guanzhousongmicrosoft Jun 10, 2026
b2d0226
docs: address review feedback on npm release pipeline
guanzhousongmicrosoft Jun 10, 2026
12aed61
Merge branch 'main' into dev/guanzhousong/npm-publishing
tnaum-ms Jul 6, 2026
1daba4f
ci: make npm build pipeline manual-only (trigger: none)
tnaum-ms Jul 6, 2026
6a98725
ci: update release package to @microsoft/vscode-ext-webview
tnaum-ms Jul 6, 2026
38a5f5e
ci: add loud banner for real publish mode in release pipeline
tnaum-ms Jul 6, 2026
843d18d
ci: cap PublishPackage job with a 120-minute timeout
tnaum-ms Jul 6, 2026
12cfe47
ci: include run mode in release stage display name
tnaum-ms Jul 6, 2026
6b3e5ad
ci: add ADO run-summary boxes to npm build and release pipelines
tnaum-ms Jul 6, 2026
fe9344c
ci: extract inline pipeline PowerShell into .azure-pipelines/scripts/
tnaum-ms Jul 6, 2026
1ecf150
fix(ci): remove emoji from pipeline .ps1 scripts (Windows PS 5.1 enco…
tnaum-ms Jul 6, 2026
6896881
ci: set descriptive ADO run names for npm pipelines
tnaum-ms Jul 6, 2026
874b041
fix(ci): standardize display names in YAML pipeline files
tnaum-ms Jul 6, 2026
4d3be21
ci: print run info to log instead of task.uploadsummary (policy)
tnaum-ms Jul 6, 2026
e6ca460
fix(ci): bundle pipeline scripts into build artifact for release job
tnaum-ms Jul 6, 2026
a198005
ci: inline release pipeline scripts; drop artifact script bundling
tnaum-ms Jul 6, 2026
a6c4d68
ci: make release 'mode' picklist self-documenting via prefix matching
tnaum-ms Jul 6, 2026
888b125
fix: clarify description of test-esrp-auth parameter in release pipeline
tnaum-ms Jul 6, 2026
a6a0a6b
fix: enhance descriptions for run mode parameters in release pipeline
tnaum-ms Jul 6, 2026
8068d4f
fix: add additional release owners and approvers for ESRP notifications
tnaum-ms Jul 6, 2026
7596a08
fix(ci): use comma to separate ESRP owners/approvers emails
tnaum-ms Jul 6, 2026
6f6bb5e
fix(ci): read package.json with -Raw before ConvertFrom-Json in pack …
tnaum-ms Jul 7, 2026
12b3eac
fix(ci): force array before .Count when counting .tgz files in pack s…
tnaum-ms Jul 7, 2026
371622f
fix(ci): read package.json with -Raw before ConvertFrom-Json in relea…
tnaum-ms Jul 7, 2026
19e5005
fix(ci): force array when matching .tgz files in release pipeline
tnaum-ms Jul 7, 2026
1f8b785
Merge branch 'main' into dev/tnaum/npm-publishing
tnaum-ms Jul 7, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
207 changes: 145 additions & 62 deletions .azure-pipelines/build-npm-packages.yml
Original file line number Diff line number Diff line change
@@ -1,62 +1,145 @@
# Dummy build pipeline for configuration validation
# Replace with build-npm-packages.yml once ADO pipeline is configured

trigger: none
pr: none

parameters:
- name: "debug"
displayName: "Enable debug output"
type: boolean
default: false

variables:
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)]
system.debug: ${{ parameters.debug }}
WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest"

resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main

extends:
template: v2/OneBranch.Official.CrossPlat.yml@templates
parameters:
cloudvault:
enabled: false
globalSdl:
asyncSdl:
enabled: false
tsa:
enabled: false
credscan:
suppressionsFile: $(Build.SourcesDirectory)/.azure-pipelines/compliance/CredScanSuppressions.json
policheck:
break: true
suppression:
suppressionFile: $(Build.SourcesDirectory)/.config/guardian/.gdnsuppress
codeql:
compiled:
enabled: false
tsaEnabled: false
componentgovernance:
ignoreDirectories: $(Build.SourcesDirectory)/.vscode-test
featureFlags:
linuxEsrpSigning: true
WindowsHostVersion:
Version: 2022

stages:
- stage: BuildStage
jobs:
- job: Main
pool:
type: windows
variables:
ob_outputDirectory: '$(Build.ArtifactStagingDirectory)\build'
steps:
- pwsh: Write-Output "Dummy build pipeline - configuration validated successfully"
displayName: "\U00002705 Dummy step"
# Build pipeline for npm packages in the packages/ folder
# Produces .tgz archives that can be published via the npm release pipeline.
#
# Scope: only packages in $publishablePackages (below) are packed and shipped
# as release artifacts. Today this is just packages/vscode-ext-webview
# (which publishes to the @microsoft scope on npm). The other workspace
# packages are still built and tested by 'npm run build/test --workspaces'
Comment thread
tnaum-ms marked this conversation as resolved.
# so the monorepo stays healthy, but they are NOT packed - they are local-
# only deps and not released through this pipeline.

# Manual-only build. The build/test work here is already covered on every push
# by the GitHub Actions CI (.github/workflows/main.yml) and the main extension
# ADO pipeline (.azure-pipelines/build.yml, which also runs Component Governance
# / CredScan / PoliCheck over the same monorepo). The ONLY unique output of this
# pipeline is the packed .tgz release artifact, which is only ever consumed by
# release-npm-packages.yml. So there is no reason to run it continuously.
#
# Release procedure: queue this pipeline manually, wait for it to succeed, then
# queue release-npm-packages.yml (which picks up the latest successful run of
# this pipeline via its 'npmBuild' pipeline resource).
trigger: none

# Disable PR trigger
pr: none

parameters:
- name: 'debug'
displayName: 'Enable debug output'
type: boolean
default: false
- name: isOfficialBuild
displayName: 'Official Build'
type: boolean
default: true

variables:
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
system.debug: ${{ parameters.debug }}

WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest' # Docker image which is used to build the project https://aka.ms/obpipelines/containers

resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main

extends:
${{ if eq(parameters.isOfficialBuild, true) }}:
template: v2/OneBranch.Official.CrossPlat.yml@templates # https://aka.ms/obpipelines/templates
${{ else }}:
template: v2/OneBranch.NonOfficial.CrossPlat.yml@templates # https://aka.ms/obpipelines/templates
parameters:
cloudvault: # https://aka.ms/obpipelines/cloudvault
enabled: false
globalSdl: # https://aka.ms/obpipelines/sdl
asyncSdl:
enabled: false
tsa:
enabled: false
credscan:
suppressionsFile: $(Build.SourcesDirectory)/.azure-pipelines/compliance/CredScanSuppressions.json
policheck:
break: true
suppression:
suppressionFile: $(Build.SourcesDirectory)/.config/guardian/.gdnsuppress
codeql:
compiled:
enabled: false
tsaEnabled: false
componentgovernance:
ignoreDirectories: $(Build.SourcesDirectory)/.vscode-test
featureFlags:
linuxEsrpSigning: true
WindowsHostVersion:
Version: 2022

stages:
- stage: BuildStage
jobs:
- job: Main
pool:
type: windows
variables:
ob_outputDirectory: '$(Build.ArtifactStagingDirectory)\build' # this directory is uploaded to pipeline artifacts. More info at https://aka.ms/obpipelines/artifacts
ob_sdl_codeSignValidation_excludes: '-|**\*.json;-|**\*.js;-|**\node_modules\**;'
steps:
- task: ComponentGovernanceComponentDetection@0
displayName: 'Component Governance - Component Detection'

- task: NodeTool@0
displayName: "Use Node.js"
inputs:
versionSource: fromFile
versionFilePath: .nvmrc

- task: npmAuthenticate@0
displayName: "Authenticate to npm registry"
inputs:
workingFile: '$(Build.SourcesDirectory)/.azure-pipelines/.npmrc'

- task: Npm@1
displayName: "Install Dependencies"
condition: succeeded()
inputs:
command: custom
customCommand: ci --userconfig $(Build.SourcesDirectory)/.azure-pipelines/.npmrc
workingDir: $(Build.SourcesDirectory)

- task: Npm@1
displayName: "Build Workspace Packages"
condition: succeeded()
inputs:
command: custom
customCommand: run build --workspaces --if-present
workingDir: $(Build.SourcesDirectory)

- task: Npm@1
displayName: "Test Workspace Packages"
condition: succeeded()
inputs:
command: custom
customCommand: run test --workspaces --if-present
workingDir: $(Build.SourcesDirectory)

- task: PowerShell@2
displayName: "Pack npm packages"
condition: succeeded()
inputs:
targetType: 'filePath'
filePath: '$(Build.SourcesDirectory)/.azure-pipelines/scripts/pack-npm-packages.ps1'
arguments: >-
-SourcesDirectory '$(Build.SourcesDirectory)'
-OutputDirectory '$(ob_outputDirectory)'
-SummaryPath '$(Build.ArtifactStagingDirectory)\pack-summary.md'

- task: CopyFiles@2
displayName: "Copy package metadata to staging"
condition: succeeded()
inputs:
Contents: |
packages/vscode-ext-webview/package.json
!**/node_modules/**
TargetFolder: $(ob_outputDirectory)
Loading