diff --git a/Build/package/jobs_package_vsix.yml b/Build/package/jobs_package_vsix.yml index 703fbf487..a8d161bb1 100644 --- a/Build/package/jobs_package_vsix.yml +++ b/Build/package/jobs_package_vsix.yml @@ -48,9 +48,9 @@ jobs: script: | export SRC_DIR=$(echo $BUILD_SOURCESDIRECTORY | sed 's|\\|/|g') cd "$SRC_DIR/${{ parameters.srcDir }}" - npm install + npm ci --include=dev --include=optional if [ $? -ne 0 ]; then - echo "npm install failed, sleeping for 30s before retrying..." + echo "npm ci failed, sleeping for 30s before retrying..." sleep 30 exit 1 fi @@ -59,10 +59,6 @@ jobs: - script: mkdir $(Build.ArtifactStagingDirectory)\vsix displayName: Create Staging Directory - - script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/vsce@3.9.2 - displayName: Install vsce - workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} - - script: npm rebuild @vscode/vsce-sign --ignore-scripts=false displayName: Rebuild vsce-sign binary workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} @@ -93,3 +89,7 @@ jobs: inputs: solution: $(Build.SourcesDirectory)\Build\signing\SignVsix.proj msbuildArguments: /p:SignType=${{ parameters.signType }} + + - script: npx vsce verify-signature -i $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.vsix -m $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.manifest -s $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}.signature.p7s + displayName: Verify VSIX signature + workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} diff --git a/Build/publish/cpptools_extension_pack.yml b/Build/publish/cpptools_extension_pack.yml index cb30e5212..a5f775965 100644 --- a/Build/publish/cpptools_extension_pack.yml +++ b/Build/publish/cpptools_extension_pack.yml @@ -40,4 +40,5 @@ extends: - template: /Build/publish/jobs_publish_vsix.yml@self parameters: vsixName: cpptools-extension-pack + srcDir: ExtensionPack diff --git a/Build/publish/cpptools_themes.yml b/Build/publish/cpptools_themes.yml index ea93bbce7..011b317e8 100644 --- a/Build/publish/cpptools_themes.yml +++ b/Build/publish/cpptools_themes.yml @@ -40,4 +40,5 @@ extends: - template: /Build/publish/jobs_publish_vsix.yml@self parameters: vsixName: cpptools-themes + srcDir: Themes diff --git a/Build/publish/jobs_publish_vsix.yml b/Build/publish/jobs_publish_vsix.yml index d2d949804..160c48746 100644 --- a/Build/publish/jobs_publish_vsix.yml +++ b/Build/publish/jobs_publish_vsix.yml @@ -2,6 +2,9 @@ parameters: - name: vsixName type: string default: '' +- name: srcDir + type: string + default: '' jobs: - job: Publish @@ -16,11 +19,16 @@ jobs: targetPath: $(Build.StagingDirectory)\vsix steps: + - checkout: self + - task: NodeTool@0 displayName: Use Node 22.x inputs: versionSpec: 22.x + - script: IF EXIST %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc del %SYSTEMDRIVE%\Users\%USERNAME%\.npmrc + displayName: Delete .npmrc if it exists + - task: AzureCLI@2 displayName: Generate AAD_TOKEN inputs: @@ -31,16 +39,24 @@ jobs: $aadToken = az account get-access-token --query accessToken --resource $(AzureGuid) -o tsv Write-Host "##vso[task.setvariable variable=AAD_TOKEN;issecret=true]$aadToken" - - script: npm install --no-save --ignore-scripts=false --include=optional --force @vscode/vsce@3.9.2 - displayName: Install vsce + - script: npm ci --include=dev --include=optional + displayName: Install dependencies + workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} - script: npm rebuild @vscode/vsce-sign --ignore-scripts=false displayName: Rebuild vsce-sign binary + workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} - script: if not exist node_modules\@vscode\vsce-sign\bin\vsce-sign.exe (echo Missing vsce-sign.exe && exit 1) displayName: Verify vsce-sign binary exists + workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} + + - script: npx vsce verify-signature -i $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.vsix -m $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.manifest -s $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.signature.p7s + displayName: Verify VSIX signature + workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} - script: npx vsce publish --skip-duplicate -i $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.vsix --manifestPath $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.manifest --signaturePath $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}.signature.p7s displayName: Publish to Marketplace + workingDirectory: $(Build.SourcesDirectory)\${{ parameters.srcDir }} env: VSCE_PAT: $(AAD_TOKEN)