Skip to content

Commit ddfdfa0

Browse files
authored
create extension with locked tool version (dotnet#1338)
1 parent edf0718 commit ddfdfa0

File tree

3 files changed

+28
-9
lines changed

3 files changed

+28
-9
lines changed

INTERNAL.md

+12-4
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,21 @@ NuGet packages produced from every build of `main` are auto-published to the NuG
1414

1515
## Publish VS Code Extension
1616

17-
The repo produces two versions of the VS Code extension on every build; one for Stable, the other for Insiders, and they both target the same backing tool.
17+
The signed build produces three versions of the VS Code extension, 2 against Stable VS Code and 1 against Insiders. Both versions against Stable append a `"0"` character to the extension version number and Insiders appends a `"1"` character.
1818

19-
The Stable version of the extension can be published from a specified build via [this](https://dev.azure.com/dnceng/internal/_release?_a=releases&view=mine&definitionId=86) release definition. The extension version number for Stable will always be the version of the internal tool plus another `"0"` character, e.g., if the tool version is `1.0.123456`, then the Stable extension will be version `1.0.1234560`. Due to how the VS Code marketplace handles extensions, this _also_ will publish the corresponding Insiders version.
19+
### Stable with locked tool version
2020

21-
The Insiders version of the extension can be published from a specified build via [this](https://dev.azure.com/dnceng/internal/_release?_a=releases&view=mine&definitionId=103) release definition. The extension number for Insiders will always be the version of the internal tool plus another `"1"` character, e.g., if the tool version is `1.0.123456`, then the Insiders extension will be version `1.0.1234561`.
21+
The Stable extension with the locked tool version can be published via [this](https://dev.azure.com/dnceng/internal/_release?_a=releases&view=mine&definitionId=86) release definition. **This will also immediately publish the corresponding Insiders version of the extension.**
2222

23-
Once either of those release definitions are invoked, the new extension will appear in the VS Code marketplace approximately 10 minutes later, after the marketplace has run their own internal validation.
23+
### Stable with latest tool
24+
25+
The Stable extension with the latest tool can be published via [this](https://dev.azure.com/dnceng/internal/_release?_a=releases&view=mine&definitionId=115) release definition. **This will also immediately publish the corresponding Insiders version of the extension.**
26+
27+
### Insiders with latest tool
28+
29+
The Insiders extension with the latest tool can be published via [this](https://dev.azure.com/dnceng/internal/_release?_a=releases&view=mine&definitionId=103) release definition.
30+
31+
Once any of those release definitions are invoked, the new extension will appear in the VS Code marketplace approximately 10 minutes later, after the marketplace has run their own internal validation.
2432

2533
The publish/verification script is located in this repo at [`eng/publish/PublishVSCodeExtension.ps1`](eng/publish/PublishVSCodeExtension.ps1).
2634

eng/package/PackUtilities.ps1

+5
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,11 @@ function SetNpmVersionNumber([PSCustomObject]$packageJsonContents, [string]$pack
1919

2020
function AddGitShaToDescription([PSCustomObject]$packageJsonContents, [string]$gitSha) {
2121
Write-Host "Appending git SHA $gitSha to description."
22+
$shaIndex = $packageJsonContents.description.IndexOf(" Git SHA ")
23+
if ($shaIndex -ge 0) {
24+
$packageJsonContents.description = $packageJsonContents.description.Substring(0, $shaIndex)
25+
}
26+
2227
$packageJsonContents.description += " Git SHA $gitSha"
2328
}
2429

eng/package/PackVSCodeExtension.ps1

+11-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ param (
88
Set-StrictMode -version 2.0
99
$ErrorActionPreference = "Stop"
1010

11-
function Build-VsCodeExtension([string] $packageDirectory, [string] $packageVersionNumber, [string] $kernelVersionNumber) {
11+
function Build-VsCodeExtension([string] $packageDirectory, [string] $outputSubDirectory = "", [string] $packageVersionNumber, [string] $kernelVersionNumber = "") {
1212
Push-Location $packageDirectory
1313

1414
$packageJsonPath = Join-Path (Get-Location) "package.json"
@@ -17,17 +17,22 @@ function Build-VsCodeExtension([string] $packageDirectory, [string] $packageVers
1717
AddGitShaToDescription -packageJsonContents $packageJsonContents -gitSha $gitSha
1818

1919
# set tool version
20-
Write-Host "Setting tool version to $kernelVersionNumber"
21-
$packageJsonContents.contributes.configuration.properties."dotnet-interactive.minimumInteractiveToolVersion"."default" = $kernelVersionNumber
20+
if ($kernelVersionNumber -Ne "") {
21+
Write-Host "Setting tool version to $kernelVersionNumber"
22+
$packageJsonContents.contributes.configuration.properties."dotnet-interactive.minimumInteractiveToolVersion"."default" = $kernelVersionNumber
23+
}
2224

2325
SaveJson -packageJsonPath $packagejsonPath -packageJsonContents $packageJsonContents
2426

2527
# create destination
26-
EnsureCleanDirectory -location "$outDir\$packageDirectory"
28+
if ($outputSubDirectory -Eq "") {
29+
$outputSubDirectory = $packageDirectory
30+
}
31+
EnsureCleanDirectory -location "$outDir\$outputSubDirectory"
2732

2833
# pack
2934
Write-Host "Packing extension"
30-
npx vsce package --out "$outDir\$packageDirectory\dotnet-interactive-vscode-$packageVersionNumber.vsix"
35+
npx vsce package --out "$outDir\$outputSubDirectory\dotnet-interactive-vscode-$packageVersionNumber.vsix"
3136

3237
Pop-Location
3338
}
@@ -41,6 +46,7 @@ try {
4146

4247
$stablePackageVersion = "${stableToolVersionNumber}0"
4348
$insidersPackageVersion = "${stableToolVersionNumber}1"
49+
Build-VsCodeExtension -packageDirectory "stable" -outputSubDirectory "stable-locked" -packageVersionNumber $stablePackageVersion
4450
Build-VsCodeExtension -packageDirectory "stable" -packageVersionNumber $stablePackageVersion -kernelVersionNumber $stableToolVersionNumber
4551
Build-VsCodeExtension -packageDirectory "insiders" -packageVersionNumber $insidersPackageVersion -kernelVersionNumber $stableToolVersionNumber
4652
}

0 commit comments

Comments
 (0)