Skip to content
Merged
Show file tree
Hide file tree
Changes from 97 commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
caadd31
.nvmrc nodejs version bump to `20.18`
tnaum-ms Aug 24, 2025
05d0b5b
Merge branch 'next' into dev/tnaum/build-and-pipeline-updates
tnaum-ms Aug 25, 2025
b353bce
Merge branch 'next' into dev/tnaum/build-and-pipeline-updates
tnaum-ms Aug 25, 2025
d390e9d
feat: improved dependency caching in Github Actions
tnaum-ms Aug 25, 2025
4c7e4e9
version bump to `v.0.4.2-alpha`
tnaum-ms Sep 8, 2025
a1fc0bb
Version bump to `v.0.4.2-alpha` (#256)
tnaum-ms Sep 8, 2025
5d3c03d
wip: Introducing nativeAuth + entraId auth configs for tenantid persi…
tnaum-ms Sep 19, 2025
a2112da
wip: updating storage item to support auth method configs
tnaum-ms Sep 19, 2025
7dec617
wip: refactored credential classes for better naming and scoping
tnaum-ms Sep 19, 2025
b35c035
Removed deprecated properties from EphemeralClusterCredentials
tnaum-ms Sep 19, 2025
e65d4cd
fix: simplified storage secred index
tnaum-ms Sep 19, 2025
c2313fd
Removed deprecated properties from CachedlClusterCredentials
tnaum-ms Sep 19, 2025
182e3a2
feat: discovery, vcore, tenantid discovery for entraid
tnaum-ms Sep 19, 2025
09551a7
chore: removed obsolete code, removed deprecated fields
tnaum-ms Sep 22, 2025
58f038a
fix: native auth + connectionPassword is now optional
tnaum-ms Sep 22, 2025
3234488
chore: keep track if potential custom azure clouds
tnaum-ms Sep 22, 2025
504b859
feat: using the tenantId for Entra ID
tnaum-ms Sep 22, 2025
b69b55f
feat: using the tenantId for Entra ID
tnaum-ms Sep 22, 2025
25f8f7d
feat: improved entraId data sharing in the extension
tnaum-ms Sep 22, 2025
358c409
removed deprecated properties
tnaum-ms Sep 23, 2025
1de02a9
chore: refactoring - unified auth config names in the codebase
tnaum-ms Sep 23, 2025
190630b
feat: entraid, persisiting subscriptionId
tnaum-ms Sep 23, 2025
9ad4bd0
chore; comments. Update src/documentdb/auth/AuthConfig.ts
tnaum-ms Sep 23, 2025
eee4e68
chore. Update src/documentdb/CredentialCache.ts
tnaum-ms Sep 23, 2025
91be0d8
Update src/tree/connections-view/DocumentDBClusterItem.ts
tnaum-ms Sep 23, 2025
1b0a583
feat: showing tenant names in the subscription list
tnaum-ms Sep 23, 2025
a9ca7cf
feat: showing tenant names in the subscription list
tnaum-ms Sep 23, 2025
9c20fad
wip: discovery, manage credentials, prepared framework
tnaum-ms Sep 23, 2025
cdaf8fc
wip: multiuser+multitenant support in azure discovery
tnaum-ms Sep 23, 2025
acd7916
wip: multiuser+multitenant support in azure discovery
tnaum-ms Sep 23, 2025
b0a259f
wip: multiuser+multitenant support in azure discovery
tnaum-ms Sep 24, 2025
960130b
wip: multiuser+multitenant support in azure discovery
tnaum-ms Sep 24, 2025
7172389
wip: multiuser+multitenant support in azure discovery
tnaum-ms Sep 24, 2025
960adaa
improved account selection
tnaum-ms Sep 24, 2025
d899a17
fix: simplified select account step.
tnaum-ms Sep 24, 2025
5c9de0a
fix: simplified select tenant step.
tnaum-ms Sep 24, 2025
5cb323f
simplified context config for credentials management
tnaum-ms Sep 24, 2025
e202ad7
fix: not attempting to sync unselectedTenants with Azure Resources (i…
tnaum-ms Sep 24, 2025
ec5fce5
fix: improved loading behavior on subscriptions
tnaum-ms Sep 24, 2025
15fec87
fix: updated quickpicks to show loading animations correctly
tnaum-ms Sep 24, 2025
d53abee
feat: added improved quick pick loading state to existing quickpick i…
tnaum-ms Sep 24, 2025
7a9bb7a
feat: added credentials management to the discovery wizard (when no s…
tnaum-ms Sep 24, 2025
fcc1e3e
updated user facing language in dialogs
tnaum-ms Sep 24, 2025
e1e1d3a
feat: enabled cred management to all azure service discovery providers
tnaum-ms Sep 24, 2025
9314c57
feat: account/tenant config available in the wizard-discovery flow
tnaum-ms Sep 25, 2025
97b2d61
updated wording / icons of account/tenant mangement
tnaum-ms Sep 25, 2025
93e1269
fix: avoiding potential runtime errors
tnaum-ms Sep 25, 2025
327a9cb
telemetry
tnaum-ms Sep 25, 2025
e26c684
feat: UX improvement: warn user about potentially hidden subscriptions
tnaum-ms Sep 25, 2025
5927c10
chore: copilot instructions tweak
tnaum-ms Sep 25, 2025
07c2c03
chore: refactor and extract tenant filtering
tnaum-ms Sep 25, 2025
3355a1e
feat: in wizard-discovery, do not filter by tenant
tnaum-ms Sep 25, 2025
586bff9
wip: tenant/subscription filtering
tnaum-ms Sep 26, 2025
e22a25d
feat: new tenant+subscription filtering
tnaum-ms Sep 26, 2025
0bdc118
feat: sorting tenants
tnaum-ms Sep 26, 2025
03ca51b
wip: poc
tnaum-ms Sep 26, 2025
60c6de5
chore: removed unused tenant filtering in acccoutn management
tnaum-ms Sep 26, 2025
d61c5fd
fix: wording
tnaum-ms Sep 26, 2025
efbeb47
chore: updated labels/titles to use title formatting
tnaum-ms Sep 26, 2025
4fe696d
fix: exit wizard when a new account is added
tnaum-ms Sep 26, 2025
eeb2cc4
fix: account step tweak
tnaum-ms Sep 26, 2025
5a3e674
fix: empty subscription filters weren't persisted
tnaum-ms Sep 26, 2025
6696e5b
l10n
tnaum-ms Sep 26, 2025
7f08608
fix: handle empty subscription filters better
tnaum-ms Sep 26, 2025
10e68dc
chore: refactore / raname files
tnaum-ms Sep 26, 2025
6d88b4e
fix: removed duplicate error messages
tnaum-ms Sep 26, 2025
18b42e5
l10n
tnaum-ms Sep 26, 2025
e634d5a
chore: removed unused code
tnaum-ms Sep 29, 2025
ffa5152
feat: provide tenantId when entraid + connection string
tnaum-ms Sep 29, 2025
4b7e76c
feat: offer to update tenantId when editing credentials
tnaum-ms Sep 29, 2025
f558984
chore: updated user facing labels
tnaum-ms Sep 29, 2025
43d6006
feat: improved 'no account / no subscription' flow for azure service …
tnaum-ms Sep 29, 2025
518678d
Update src/documentdb/CredentialCache.ts
tnaum-ms Sep 29, 2025
abe873c
prettier-fix
tnaum-ms Sep 29, 2025
031e141
Merge branch 'next' into dev/tnaum/build-and-pipeline-updates
tnaum-ms Sep 30, 2025
6933061
wip: first draft of the release pipeline
tnaum-ms Oct 1, 2025
2353ab2
Build and Pipeline Configuration Updates (#231)
tnaum-ms Oct 1, 2025
05de092
Merge branch 'next' into dev/tnaum/276-service-discovery-entra-id-imp…
tnaum-ms Oct 9, 2025
f616c6f
feat: added documentation for azure discovery account management
tnaum-ms Oct 10, 2025
3069e39
Fix/Feat: Service discovery Entra ID implementation does not use tena…
tnaum-ms Oct 10, 2025
b53a673
chore(deps-dev): bump tar-fs from 2.1.3 to 2.1.4
dependabot[bot] Oct 10, 2025
71f8f56
chore(deps-dev): bump tar-fs from 2.1.3 to 2.1.4 (#278)
tnaum-ms Oct 10, 2025
b08ce9b
feat: content for the help and feedback view
tnaum-ms Oct 10, 2025
51dec11
updated the open url command
tnaum-ms Oct 10, 2025
9ba3810
Updated target URLs
tnaum-ms Oct 10, 2025
c116f65
Updated labels
tnaum-ms Oct 10, 2025
ec53528
Added content to the "Help and Feedback" View (#289)
tnaum-ms Oct 10, 2025
00b439a
Version bump to `0.5.0`
tnaum-ms Oct 13, 2025
33b8cc4
chore: updated docs folder structure
tnaum-ms Oct 13, 2025
375e935
Release notes
tnaum-ms Oct 13, 2025
66a6a53
changelog
tnaum-ms Oct 13, 2025
6ef0085
release notes + changelog vcore clarification
tnaum-ms Oct 13, 2025
28ec4e5
Preparing the `0.5.0` release (#298)
tnaum-ms Oct 13, 2025
9cf892d
feat: telemetry update
tnaum-ms Oct 13, 2025
27575d9
chore: minor refactor
tnaum-ms Oct 13, 2025
8f9c560
chore: typo
tnaum-ms Oct 13, 2025
03d7626
chore: typo
tnaum-ms Oct 13, 2025
dacf9ab
prettier-fix
tnaum-ms Oct 13, 2025
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
306 changes: 306 additions & 0 deletions .azure-pipelines/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,306 @@
parameters:
# The intended extension version to publish.
# This is used to verify the version in package.json matches the version to publish to avoid accidental publishing.
- name: publishVersion
displayName: "Publish Version"
type: string

# Customize the environment to associate the deployment with.
# Useful to control which group of people should be required to approve the deployment.
# Deprecated on OneBranch pipelines, use `ob_release_environment` variable and ApprovalService instead.
#- name: environmentName
# type: string
# default: AzCodeDeploy

# When true, skips the deployment job which actually publishes the extension
- name: dryRun
displayName: "Dry Run without publishing"
type: boolean
default: true

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

resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main
pipelines:
- pipeline: build # Alias for your build pipeline source
project: "CosmosDB"
source: '\VSCode Extensions\vscode-documentdb Build VSIX' # name of the pipeline that produces the artifacts

variables:
system.debug: ${{ parameters.debug }}
# Required by MicroBuild template
TeamName: "Desktop Tools"
WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest" # Docker image which is used to build the project https://aka.ms/obpipelines/containers

extends:
template: v2/OneBranch.Official.CrossPlat.yml@templates

parameters:
# remove for release pipeline?
cloudvault: # https://aka.ms/obpipelines/cloudvault
enabled: false
globalSdl: # https://aka.ms/obpipelines/sdl
asyncSdl:
enabled: false
tsa:
enabled: false # onebranch publish all sdl results to TSA. If TSA is disabled all SDL tools will forced into'break' build mode.
#configFile: '$(Build.SourcesDirectory)/.azure-pipelines/compliance/tsaoptions.json'
credscan:
suppressionsFile: $(Build.SourcesDirectory)/.azure-pipelines/compliance/CredScanSuppressions.json
policheck:
break: true # always break the build on policheck issues. You can disable it by setting to 'false'
suppression:
suppressionFile: $(Build.SourcesDirectory)/.config/guardian/.gdnsuppress
codeql:
excludePathPatterns: "**/.vscode-test, dist" # Exclude .vscode-test and dist directories from CodeQL alerting
compiled:
${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}:
enabled: true
${{ else }}:
enabled: false
tsaEnabled: false # See 'Codeql.TSAEnabled' in the Addition Options section below
componentgovernance:
ignoreDirectories: $(Build.SourcesDirectory)/.vscode-test
featureFlags:
linuxEsrpSigning: true
WindowsHostVersion:
Version: 2022
# end of remove for release pipeline

release:
category: NonAzure # NonAzure category is used to indicate that this is not an Azure service

stages:
## Uncomment this stage to validate the service connection and retrieve the user ID of the Azure DevOps Service Connection user.
## NOTE: this has to be a separate stage with pool type 'windows' to ensure that the Azure CLI task can run successfully,
## which is not supported on 'release' pool type.
## See https://aka.ms/VSM-MS-Publisher-Automate for more details.
#- stage: ValidateServiceConnection
# displayName: Validate Service Connection
# jobs:
# - job: ValidateServiceConnection
# displayName: "\U00002713 Validate Service Connection"
# pool:
# type: windows
# variables:
# ob_outputDirectory: '$(Build.ArtifactStagingDirectory)' # this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts
# steps:
# # Get the user ID of the Azure DevOps Service Connection user to use for publishing
# - task: AzureCLI@2
# displayName: 'Get AzDO User ID'
# inputs:
# azureSubscription: 'CosmosDB VSCode Publishing'
# scriptType: pscore
# scriptLocation: inlineScript
# inlineScript: |
# az rest -u https://app.vssps.visualstudio.com/_apis/profile/profiles/me --resource 499b84ac-1321-427f-aa17-267ca6975798
## END of ValidateServiceConnection stage

- stage: Release
displayName: Release extension
variables:
- name: ob_release_environment
#value: Test # should be Test, PPE or Production
value: Production # should be Test, PPE or Production
jobs:
- job: ReleaseValidation
displayName: "\U00002713 Validate Artifacts"
templateContext:
inputs:
- input: pipelineArtifact
pipeline: build
targetPath: $(System.DefaultWorkingDirectory)
artifactName: drop_BuildStage_Main
pool:
type: release
variables:
ob_outputDirectory: "$(Build.ArtifactStagingDirectory)" # this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts
steps:
# Modify the build number to include repo name, extension version, and if dry run is true
- task: PowerShell@2
displayName: "\U0001F449 Prepend version from package.json to build number"
env:
dryRun: ${{ parameters.dryRun }}
inputs:
targetType: "inline"
script: |
# Get the version from package.json
$packageJsonPath = "$(System.DefaultWorkingDirectory)/package.json"
if (-not (Test-Path $packageJsonPath)) {
Write-Error "[Error] package.json not found at $packageJsonPath"
exit 1
}

$packageJson = Get-Content $packageJsonPath | ConvertFrom-Json
$npmVersionString = $packageJson.version
if (-not $npmVersionString) {
Write-Error "[Error] Version not found in package.json"
exit 1
}

$isDryRun = "$env:dryRun"
$currentBuildNumber = "$(Build.BuildId)"

$repoName = "$(Build.Repository.Name)"
$repoNameParts = $repoName -split '/'
$repoNameWithoutOwner = $repoNameParts[-1]

$dryRunSuffix = ""
if ($isDryRun -eq 'True') {
Write-Output "Dry run was set to True. Adding 'dry' to the build number."
$dryRunSuffix = "-dry"
}

$newBuildNumber = "$repoNameWithoutOwner-$npmVersionString$dryRunSuffix-$currentBuildNumber"
Write-Output "Setting build number to: $newBuildNumber"
Write-Output "##vso[build.updatebuildnumber]$newBuildNumber"

# For safety, verify the version in package.json matches the version to publish entered by the releaser
# If they don't match, this step fails
- task: PowerShell@2
displayName: "\U0001F449 Verify publish version"
env:
publishVersion: ${{ parameters.publishVersion }}
inputs:
targetType: "inline"
script: |
# Get the version from package.json
$packageJsonPath = "$(System.DefaultWorkingDirectory)/package.json"
if (-not (Test-Path $packageJsonPath)) {
Write-Error "[Error] package.json not found at $packageJsonPath"
exit 1
}

$packageJson = Get-Content $packageJsonPath | ConvertFrom-Json
$npmVersionString = $packageJson.version
$publishVersion = "$env:publishVersion"

Write-Output "Package.json version: $npmVersionString"
Write-Output "Requested publish version: $publishVersion"

# Validate both versions are semantic versions
$semverPattern = '^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?$'
if ($npmVersionString -notmatch $semverPattern) {
Write-Error "[Error] Version in package.json ($npmVersionString) is not a valid semantic version"
exit 1
}
if ($publishVersion -notmatch $semverPattern) {
Write-Error "[Error] Publish version ($publishVersion) is not a valid semantic version"
exit 1
}

if ($npmVersionString -eq $publishVersion) {
Write-Output "[Success] Publish version matches package.json version. Proceeding with release."
} else {
Write-Error "[Error] Publish version '$publishVersion' doesn't match version found in package.json '$npmVersionString'. Cancelling release."
exit 1
}

# Find the vsix to release and set the vsix file name variable
# Fails with an error if more than one .vsix file is found, or if no .vsix file is found
- task: PowerShell@2
displayName: "\U0001F449 Find and Set .vsix File Variable"
name: setVsixFileNameStep
inputs:
targetType: "inline"
script: |
# Get all .vsix files in the current directory
Write-Output "Searching for .vsix files in: $(System.DefaultWorkingDirectory)"
Write-Output "Directory contents:"
Get-ChildItem -Path $(System.DefaultWorkingDirectory) -File | Where-Object { $_.Extension -in @('.vsix', '.json', '.p7s', '.manifest') } | Select-Object Name, Length, LastWriteTime | Format-Table

$vsixFiles = Get-ChildItem -Path $(System.DefaultWorkingDirectory) -Filter *.vsix -File

# Check if more than one .vsix file is found
if ($vsixFiles.Count -gt 1) {
Write-Error "[Error] More than one .vsix file found: $($vsixFiles.Name -join ', ')"
exit 1
} elseif ($vsixFiles.Count -eq 0) {
Write-Error "[Error] No .vsix files found in $(System.DefaultWorkingDirectory)"
exit 1
} else {
# Set the pipeline variable
$vsixFileName = $vsixFiles.Name
$vsixFileSize = [math]::Round($vsixFiles.Length / 1MB, 2)
Write-Output "##vso[task.setvariable variable=vsixFileName;isOutput=true]$vsixFileName"
Write-Output "[Success] Found .vsix file: $vsixFileName (${vsixFileSize} MB)"
}

- task: PowerShell@2
displayName: "\U0001F449 Verify Publishing Files"
inputs:
targetType: "inline"
script: |
$vsixFileName = "$(setVsixFileNameStep.vsixFileName)"
if (-not $vsixFileName) {
Write-Error "[Error] vsixFileName variable not defined."
exit 1
}

$vsixPath = "$(System.DefaultWorkingDirectory)/$vsixFileName"
$manifestPath = "$(System.DefaultWorkingDirectory)/extension.manifest"
$signaturePath = "$(System.DefaultWorkingDirectory)/extension.signature.p7s"

Write-Output "Validating required files for publishing:"

if (Test-Path -Path $vsixPath) {
$vsixSize = [math]::Round((Get-Item $vsixPath).Length / 1MB, 2)
Write-Output "✓ VSIX file found: $vsixFileName (${vsixSize} MB)"
} else {
Write-Error "[Error] The specified VSIX file does not exist: $vsixPath"
exit 1
}

if (Test-Path -Path $manifestPath) {
Write-Output "✓ Manifest file found: extension.manifest"
} else {
Write-Warning "[Warning] Manifest file not found: $manifestPath"
}

if (Test-Path -Path $signaturePath) {
Write-Output "✓ Signature file found: extension.signature.p7s"
} else {
Write-Warning "[Warning] Signature file not found: $signaturePath"
}

Write-Output "[Success] $vsixFileName is ready for publishing."

- job: PublishExtension
displayName: "\U00002713 Publish Extension"
condition: and(succeeded(), ${{ eq(parameters.dryRun, false) }})
dependsOn: ReleaseValidation
pool:
type: release
variables:
vsixFileName: $[ dependencies.ReleaseValidation.outputs['setVsixFileNameStep.vsixFileName'] ]
templateContext:
inputs:
- input: pipelineArtifact
pipeline: build
targetPath: $(System.DefaultWorkingDirectory)
artifactName: drop_BuildStage_Main
workflow: vsce
vsce:
serviceConnection: "CosmosDB VSCode Publishing" # azureRM service connection for the managed identity used to publish the extension. Only this publishing auth method is supported.
vsixPath: "$(vsixFileName)" # Path to VSIX file in artifact
#preRelease: true # default false. Whether the extension is a pre-release.
signaturePath: $(System.DefaultWorkingDirectory)/extension.signature.p7s # optional
manifestPath: $(System.DefaultWorkingDirectory)/extension.manifest # optional
useCustomVSCE: true # for the time being, you must supply a feed in your project with @vscode/[email protected]
feed:
organization: msdata
project: CosmosDB
feedName: vscode-documentdb
steps:
# we need a noop step otherwise the vsce template won't run
- pwsh: Write-Output "Done"
condition: ${{ eq(parameters.dryRun, true) }} # noop this condition is always false
displayName: "\U0001F449 Post-Publishing"
2 changes: 1 addition & 1 deletion .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ This document provides comprehensive guidelines and context for GitHub Copilot t
- Use l10n for any user-facing strings with `vscode.l10n.t()`.
- Use `npm run prettier-fix` to format your code before committing.
- Use `npm run lint` to check for linting errors.
- Use `npm run build` to ensure the project builds successfully (do not use `npm run compile`).
- Use `npm run build` to ensure the project builds successfully.
- Use `npm run l10n` to update localization files in case you change any user-facing strings.
- Ensure TypeScript compilation passes without errors.

Expand Down
Loading
Loading