Engineering - pipeline perf improvements (#268041)

* Engineering - declare compilation stage output

* Fix typo

* Declare artifacts

* Mark compilation output as non-production

* Remove condition for testing purposes

* Move declaration

* Comment out test related logs

* Upload test logs

* Add the comment back

* Remove code that is commented out

* Trying to switch to one artifact

* Add back all outputs

* Consistent outputs

* Add output parent directory

* Add more artifacts

* Move things around

* Add outputs to the CI jobs

* Switch over the CLI job

* Adjust sbomPackageName for CLI

* Restore the for loop

* More improvements to the CLI job

* Fix SBOM path

* Remove commented out tasks

* Fix atrifact names for the CI build

* Update target path
This commit is contained in:
Ladislau Szomoru
2025-09-23 23:49:19 +02:00
committed by GitHub
parent a552a5f862
commit 61d114ddc1
5 changed files with 236 additions and 116 deletions

View File

@@ -33,15 +33,15 @@ steps:
displayName: Download artifact
inputs:
artifact: ${{ target }}
path: $(Build.ArtifactStagingDirectory)/pkg/${{ target }}
path: $(Build.BinariesDirectory)/pkg/${{ target }}
- task: ExtractFiles@1
displayName: Extract artifact
inputs:
archiveFilePatterns: $(Build.ArtifactStagingDirectory)/pkg/${{ target }}/*.zip
destinationFolder: $(Build.ArtifactStagingDirectory)/sign/${{ target }}
archiveFilePatterns: $(Build.BinariesDirectory)/pkg/${{ target }}/*.zip
destinationFolder: $(Build.BinariesDirectory)/sign/${{ target }}
- powershell: node build\azure-pipelines\common\sign $env:EsrpCliDllPath sign-windows $(Build.ArtifactStagingDirectory)/sign "*.exe"
- powershell: node build\azure-pipelines\common\sign $env:EsrpCliDllPath sign-windows $(Build.BinariesDirectory)/sign "*.exe"
env:
SYSTEM_ACCESSTOKEN: $(System.AccessToken)
displayName: ✍️ Codesign
@@ -55,16 +55,7 @@ steps:
- task: ArchiveFiles@2
displayName: Archive signed files
inputs:
rootFolderOrFile: $(Build.ArtifactStagingDirectory)/sign/${{ target }}
rootFolderOrFile: $(Build.BinariesDirectory)/sign/${{ target }}
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(ASSET_ID).zip
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: $(Build.ArtifactStagingDirectory)/$(ASSET_ID).zip
artifactName: $(ASSET_ID)
displayName: Publish signed artifact with ID $(ASSET_ID)
sbomBuildDropPath: $(Build.ArtifactStagingDirectory)/sign/${{ target }}
sbomPackageName: "VS Code Windows ${{ target }} CLI"
sbomPackageVersion: $(Build.SourceVersion)

View File

@@ -199,6 +199,14 @@ extends:
pool:
name: AcesShared
os: macOS
templateContext:
outputs:
- output: pipelineArtifact
artifactName: Compilation
targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
isProduction: false
sbomEnabled: false
displayName: Publish compilation artifact
steps:
- template: build/azure-pipelines/product-compile.yml@self
@@ -346,6 +354,35 @@ extends:
timeoutInMinutes: 50
variables:
VSCODE_ARCH: x64
templateContext:
outputs:
- output: pipelineArtifact
targetPath: .build/node-cpuprofile
artifactName: $(ARTIFACT_PREFIX)node-cpuprofile-$(VSCODE_ARCH)-electron-$(System.JobAttempt)
displayName: Publish Codesign cpu profile
sbomEnabled: false
isProduction: false
- output: pipelineArtifact
targetPath: .build/crashes
artifactName: crash-dump-windows-$(VSCODE_ARCH)-electron-$(System.JobAttempt)
displayName: Publish Crash Reports
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: node_modules
artifactName: node-modules-windows-$(VSCODE_ARCH)-electron-$(System.JobAttempt)
displayName: Publish Node Modules
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: .build/logs
artifactName: logs-windows-$(VSCODE_ARCH)-electron-$(System.JobAttempt)
displayName: Publish Log Files
sbomEnabled: false
isProduction: false
condition: succeededOrFailed()
steps:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
@@ -359,6 +396,35 @@ extends:
timeoutInMinutes: 50
variables:
VSCODE_ARCH: x64
templateContext:
outputs:
- output: pipelineArtifact
targetPath: .build/node-cpuprofile
artifactName: $(ARTIFACT_PREFIX)node-cpuprofile-$(VSCODE_ARCH)-browser-$(System.JobAttempt)
displayName: Publish Codesign cpu profile
sbomEnabled: false
isProduction: false
- output: pipelineArtifact
targetPath: .build/crashes
artifactName: crash-dump-windows-$(VSCODE_ARCH)-browser-$(System.JobAttempt)
displayName: Publish Crash Reports
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: node_modules
artifactName: node-modules-windows-$(VSCODE_ARCH)-browser-$(System.JobAttempt)
displayName: Publish Node Modules
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: .build/logs
artifactName: logs-windows-$(VSCODE_ARCH)-browser-$(System.JobAttempt)
displayName: Publish Log Files
sbomEnabled: false
isProduction: false
condition: succeededOrFailed()
steps:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
@@ -372,6 +438,35 @@ extends:
timeoutInMinutes: 50
variables:
VSCODE_ARCH: x64
templateContext:
outputs:
- output: pipelineArtifact
targetPath: .build/node-cpuprofile
artifactName: $(ARTIFACT_PREFIX)node-cpuprofile-$(VSCODE_ARCH)-remote-$(System.JobAttempt)
displayName: Publish Codesign cpu profile
sbomEnabled: false
isProduction: false
- output: pipelineArtifact
targetPath: .build/crashes
artifactName: crash-dump-windows-$(VSCODE_ARCH)-remote-$(System.JobAttempt)
displayName: Publish Crash Reports
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: node_modules
artifactName: node-modules-windows-$(VSCODE_ARCH)-remote-$(System.JobAttempt)
displayName: Publish Node Modules
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: .build/logs
artifactName: logs-windows-$(VSCODE_ARCH)-remote-$(System.JobAttempt)
displayName: Publish Log Files
sbomEnabled: false
isProduction: false
condition: succeededOrFailed()
steps:
- template: build/azure-pipelines/win32/product-build-win32.yml@self
parameters:
@@ -387,6 +482,75 @@ extends:
variables:
VSCODE_ARCH: x64
templateContext:
outputParentDirectory: $(Build.SourcesDirectory)/.build/win32-$(VSCODE_ARCH)
outputs:
- output: pipelineArtifact
targetPath: .build/node-cpuprofile
artifactName: $(ARTIFACT_PREFIX)node-cpuprofile-$(VSCODE_ARCH)
displayName: Publish Codesign cpu profile
sbomEnabled: false
isProduction: false
- output: pipelineArtifact
targetPath: .build/crashes
artifactName: crash-dump-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
displayName: Publish Crash Reports
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: node_modules
artifactName: node-modules-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
displayName: Publish Node Modules
sbomEnabled: false
isProduction: false
condition: failed()
- output: pipelineArtifact
targetPath: .build/logs
artifactName: logs-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
displayName: Publish Log Files
sbomEnabled: false
isProduction: false
condition: succeededOrFailed()
- output: pipelineArtifact
targetPath: $(SYSTEM_SETUP_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_setup
displayName: Publish system setup
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) System Setup"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['SYSTEM_SETUP_PATH'], ''))
- output: pipelineArtifact
targetPath: $(USER_SETUP_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_user-setup
displayName: Publish user setup
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) User Setup"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['USER_SETUP_PATH'], ''))
- output: pipelineArtifact
targetPath: $(CLIENT_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_archive
displayName: Publish archive
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH)"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['CLIENT_PATH'], ''))
- output: pipelineArtifact
targetPath: $(SERVER_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_server_win32_$(VSCODE_ARCH)_archive
displayName: Publish server archive
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Server"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['SERVER_PATH'], ''))
- output: pipelineArtifact
targetPath: $(WEB_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_web_win32_$(VSCODE_ARCH)_archive
displayName: Publish web server archive
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)-web
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Web"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['WEB_PATH'], ''))
sdl:
suppression:
suppressionFile: $(Build.SourcesDirectory)\.config\guardian\.gdnsuppress
@@ -406,6 +570,54 @@ extends:
variables:
VSCODE_ARCH: arm64
templateContext:
outputParentDirectory: $(Build.SourcesDirectory)/.build/win32-$(VSCODE_ARCH)
outputs:
- output: pipelineArtifact
targetPath: .build/node-cpuprofile
artifactName: $(ARTIFACT_PREFIX)node-cpuprofile-$(VSCODE_ARCH)
displayName: Publish Codesign cpu profile
sbomEnabled: false
isProduction: false
- output: pipelineArtifact
targetPath: $(SYSTEM_SETUP_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_setup
displayName: Publish system setup
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) System Setup"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['SYSTEM_SETUP_PATH'], ''))
- output: pipelineArtifact
targetPath: $(USER_SETUP_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_user-setup
displayName: Publish user setup
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) User Setup"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['USER_SETUP_PATH'], ''))
- output: pipelineArtifact
targetPath: $(CLIENT_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_archive
displayName: Publish archive
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH)"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['CLIENT_PATH'], ''))
- output: pipelineArtifact
targetPath: $(SERVER_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_server_win32_$(VSCODE_ARCH)_archive
displayName: Publish server archive
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Server"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['SERVER_PATH'], ''))
- output: pipelineArtifact
targetPath: $(WEB_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_web_win32_$(VSCODE_ARCH)_archive
displayName: Publish web server archive
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)-web
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Web"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['WEB_PATH'], ''))
sdl:
suppression:
suppressionFile: $(Build.SourcesDirectory)\.config\guardian\.gdnsuppress
@@ -419,6 +631,25 @@ extends:
- ${{ if and(eq(variables['VSCODE_CIBUILD'], false), or(eq(parameters.VSCODE_BUILD_WIN32, true), eq(parameters.VSCODE_BUILD_WIN32_ARM64, true))) }}:
- job: WindowsCLISign
timeoutInMinutes: 90
templateContext:
outputParentDirectory: $(Build.ArtifactStagingDirectory)
outputs:
- ${{ if eq(parameters.VSCODE_BUILD_WIN32, true) }}:
- output: pipelineArtifact
targetPath: $(Build.ArtifactStagingDirectory)/vscode_cli_win32_x64_cli.zip
artifactName: vscode_cli_win32_x64_cli
displayName: Publish signed artifact with ID vscode_cli_win32_x64_cli
sbomBuildDropPath: $(Build.BinariesDirectory)/sign/unsigned_vscode_cli_win32_x64_cli
sbomPackageName: "VS Code Windows x64 CLI"
sbomPackageVersion: $(Build.SourceVersion)
- ${{ if eq(parameters.VSCODE_BUILD_WIN32_ARM64, true) }}:
- output: pipelineArtifact
targetPath: $(Build.ArtifactStagingDirectory)/vscode_cli_win32_arm64_cli.zip
artifactName: vscode_cli_win32_arm64_cli
displayName: Publish signed artifact with ID vscode_cli_win32_arm64_cli
sbomBuildDropPath: $(Build.BinariesDirectory)/sign/unsigned_vscode_cli_win32_arm64_cli
sbomPackageName: "VS Code Windows arm64 CLI"
sbomPackageVersion: $(Build.SourceVersion)
steps:
- template: build/azure-pipelines/win32/product-build-win32-cli-sign.yml@self
parameters:

View File

@@ -130,13 +130,6 @@ steps:
- script: tar -cz --exclude='.build/node_modules_cache' --exclude='.build/node_modules_list.txt' --exclude='.build/distro' -f $(Build.ArtifactStagingDirectory)/compilation.tar.gz $(ls -d .build out-* test/integration/browser/out test/smoke/out test/automation/out 2>/dev/null)
displayName: Compress compilation artifact
- template: common/publish-artifact.yml@self
parameters:
targetPath: $(Build.ArtifactStagingDirectory)/compilation.tar.gz
artifactName: Compilation
displayName: Publish compilation artifact
sbomEnabled: false
- script: npm run download-builtin-extensions-cg
env:
GITHUB_TOKEN: "$(github-distro-mixin-password)"

View File

@@ -142,44 +142,6 @@ steps:
continueOnError: true
condition: succeededOrFailed()
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: .build\crashes
${{ if eq(parameters.VSCODE_TEST_ARTIFACT_NAME, '') }}:
artifactName: crash-dump-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
${{ else }}:
artifactName: crash-dump-windows-$(VSCODE_ARCH)-${{ parameters.VSCODE_TEST_ARTIFACT_NAME }}-$(System.JobAttempt)
sbomEnabled: false
displayName: "Publish Crash Reports"
continueOnError: true
condition: failed()
# In order to properly symbolify above crash reports
# (if any), we need the compiled native modules too
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: node_modules
${{ if eq(parameters.VSCODE_TEST_ARTIFACT_NAME, '') }}:
artifactName: node-modules-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
${{ else }}:
artifactName: node-modules-windows-$(VSCODE_ARCH)-${{ parameters.VSCODE_TEST_ARTIFACT_NAME }}-$(System.JobAttempt)
sbomEnabled: false
displayName: "Publish Node Modules"
continueOnError: true
condition: failed()
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: .build\logs
${{ if eq(parameters.VSCODE_TEST_ARTIFACT_NAME, '') }}:
artifactName: logs-windows-$(VSCODE_ARCH)-$(System.JobAttempt)
${{ else }}:
artifactName: logs-windows-$(VSCODE_ARCH)-${{ parameters.VSCODE_TEST_ARTIFACT_NAME }}-$(System.JobAttempt)
sbomEnabled: false
displayName: "Publish Log Files"
continueOnError: true
condition: succeededOrFailed()
- task: PublishTestResults@2
displayName: Publish Tests Results
inputs:

View File

@@ -316,60 +316,3 @@ steps:
- powershell: echo "##vso[task.setvariable variable=ARTIFACT_PREFIX]attempt$(System.JobAttempt)_"
condition: and(succeededOrFailed(), notIn(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues'))
displayName: Generate artifact prefix
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: .build/node-cpuprofile
artifactName: $(ARTIFACT_PREFIX)node-cpuprofile-$(VSCODE_ARCH)
displayName: Publish Codesign cpu profile
sbomEnabled: false
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: $(CLIENT_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_archive
displayName: Publish archive
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH)"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['CLIENT_PATH'], ''))
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: $(SERVER_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_server_win32_$(VSCODE_ARCH)_archive
displayName: Publish server archive
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Server"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['SERVER_PATH'], ''))
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: $(WEB_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_web_win32_$(VSCODE_ARCH)_archive
displayName: Publish web server archive
sbomBuildDropPath: $(Agent.BuildDirectory)/vscode-server-win32-$(VSCODE_ARCH)-web
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) Web"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['WEB_PATH'], ''))
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: $(SYSTEM_SETUP_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_setup
displayName: Publish system setup
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) System Setup"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['SYSTEM_SETUP_PATH'], ''))
- template: ../common/publish-artifact.yml@self
parameters:
targetPath: $(USER_SETUP_PATH)
artifactName: $(ARTIFACT_PREFIX)vscode_client_win32_$(VSCODE_ARCH)_user-setup
displayName: Publish user setup
sbomBuildDropPath: $(Agent.BuildDirectory)/VSCode-win32-$(VSCODE_ARCH)
sbomPackageName: "VS Code Windows $(VSCODE_ARCH) User Setup"
sbomPackageVersion: $(Build.SourceVersion)
condition: and(succeededOrFailed(), ne(variables['USER_SETUP_PATH'], ''))