@@ -3,11 +3,9 @@ trigger:
33 branches :
44 include :
55 - main
6- tags :
7- include :
8- - v*
6+ - release/*
97
10- pr : [main]
8+ pr : none
119
1210resources :
1311 repositories :
@@ -16,8 +14,22 @@ resources:
1614 name : microsoft/vscode-engineering
1715 ref : main
1816 endpoint : Monaco
17+ pipelines :
18+ - pipeline : vscode
19+ source : ' ⭐️ VS Code'
20+ trigger :
21+ stages :
22+ - Release
23+ branches :
24+ include :
25+ - main
26+ - release/*
1927
2028parameters :
29+ - name : NPM_REGISTRY
30+ displayName : " Custom NPM Registry"
31+ type : string
32+ default : ' https://pkgs.dev.azure.com/monacotools/Monaco/_packaging/vscode/npm/registry/'
2133 - name : nextVersion
2234 displayName : ' 🚀 Release Version (eg: none, major, minor, patch, prerelease, or X.X.X)'
2335 type : string
@@ -36,50 +48,111 @@ extends:
3648 versionSpec : 22.x
3749 displayName : 🛠 Install Node.js (22.x)
3850
51+ - bash : |
52+ npm config set registry ${{ parameters.NPM_REGISTRY }}
53+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
54+ displayName: 🔧 Set npm registry
55+
56+ - task : npmAuthenticate@0
57+ inputs :
58+ workingFile : $(NPMRC_PATH)
59+ displayName : 🔑 Authenticate npm
60+
61+ - download : vscode
62+ artifact : copilot_vsix
63+ displayName : 📥 Download Copilot VSIX
64+ condition : and(succeeded(), ne(variables['resources.pipeline.vscode.runName'], ''))
65+
66+ - bash : |
67+ set -e
68+ if [ -f "$(Pipeline.Workspace)/vscode/copilot_vsix/copilot-chat.vsix" ]; then
69+ unzip -o "$(Pipeline.Workspace)/vscode/copilot_vsix/copilot-chat.vsix" 'extension/package.json' -d /tmp/copilot-vsix
70+ VERSION=$(node -p "require('/tmp/copilot-vsix/extension/package.json').version")
71+ rm -rf /tmp/copilot-vsix
72+ node -e "
73+ const fs = require('fs');
74+ const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
75+ pkg.version = '$VERSION';
76+ fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
77+ "
78+ echo "Set extension version to $VERSION"
79+ else
80+ echo "No Copilot VSIX found, using version from package.json"
81+ fi
82+ displayName: 📋 Sync version from extension
83+ workingDirectory: extensions/copilot
84+
3985 - bash : npm ci && npm run extract-chat-lib && rm -rf node_modules
4086 displayName : 📂 Extract chat-lib
87+ workingDirectory : extensions/copilot
88+ env :
89+ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD : 1
90+
91+ - bash : |
92+ set -e
93+ VERSION=$(node -p "require('../package.json').version")
94+ node -e "
95+ const fs = require('fs');
96+ const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
97+ pkg.version = '$VERSION';
98+ fs.writeFileSync('package.json', JSON.stringify(pkg, null, 2) + '\n');
99+ "
100+ echo "Set chat-lib version to $VERSION"
101+ displayName: 📋 Sync chat-lib version
102+ workingDirectory: extensions/copilot/chat-lib
41103
42104 - script : npm ci
43105 displayName : 📦 Install chat-lib dependencies
44- workingDirectory : chat-lib
106+ workingDirectory : extensions/copilot/ chat-lib
45107
46108 - script : npm run build
47109 displayName : 🔨 Build chat-lib
48- workingDirectory : chat-lib
110+ workingDirectory : extensions/copilot/ chat-lib
49111 testPlatforms :
50112 - name : Linux
51113 nodeVersions : [22.x]
52114 - name : MacOS
53115 nodeVersions : [22.x]
54116 - name : Windows
55117 nodeVersions : [22.x]
56- workingDirectory : chat-lib
118+ workingDirectory : extensions/copilot/ chat-lib
57119 testSteps :
120+ - bash : |
121+ npm config set registry ${{ parameters.NPM_REGISTRY }}
122+ echo "##vso[task.setvariable variable=NPMRC_PATH]$(npm config get userconfig)"
123+ displayName: 🔧 Set npm registry
124+
125+ - task : npmAuthenticate@0
126+ inputs :
127+ workingFile : $(NPMRC_PATH)
128+ displayName : 🔑 Authenticate npm
129+
58130 - bash : npm ci && npm run extract-chat-lib && rm -rf node_modules
59131 displayName : 📂 Extract chat-lib
132+ workingDirectory : extensions/copilot
133+ env :
134+ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD : 1
60135
61136 - script : npm ci
62137 displayName : 📦 Install chat-lib dependencies
63- workingDirectory : chat-lib
138+ workingDirectory : extensions/copilot/ chat-lib
64139
65140 - script : npm run build
66141 displayName : 🔨 Build chat-lib
67- workingDirectory : chat-lib
142+ workingDirectory : extensions/copilot/ chat-lib
68143
69144 - script : npm test
70145 displayName : 🧪 Run chat-lib tests
71- workingDirectory : chat-lib
72- # Tag-triggered: date-stamped patch (e.g., v0.40.2026031601) → publish to next
73- ${{ if and(startsWith( variables['Build.SourceBranch '], 'refs/tags/v'), gt(length(variables['Build.SourceBranchName']), 13) ) }} :
146+ workingDirectory : extensions/copilot/ chat-lib
147+ # Triggered by ⭐️ VS Code with insider quality → publish to next
148+ ${{ if contains( variables['resources.pipeline.vscode.runName '], '(insider)' ) }} :
74149 publishPackage : true
75150 publishRequiresApproval : false
76- nextVersion : ${{ replace(variables['Build.SourceBranchName'], 'v', '') }}
77151 tag : next
78- # Tag-triggered: short patch (e.g., v0.39.1) → publish to latest
79- ${{ elseif startsWith (variables['Build.SourceBranch '], 'refs/tags/v ') }} :
152+ # Triggered by ⭐️ VS Code with stable quality → publish to latest
153+ ${{ elseif contains (variables['resources.pipeline.vscode.runName '], '(stable) ') }} :
80154 publishPackage : true
81155 publishRequiresApproval : false
82- nextVersion : ${{ replace(variables['Build.SourceBranchName'], 'v', '') }}
83156 ${{ elseif eq(parameters.nextVersion, 'none') }} :
84157 publishPackage : false
85158 # Manual prerelease → publish to next
@@ -92,4 +165,4 @@ extends:
92165 publishPackage : true
93166 nextVersion : ${{ parameters.nextVersion }}
94167 ghCreateRelease : false
95- ghReleaseAddChangeLog : false
168+ ghReleaseAddChangeLog : false
0 commit comments