From f331de2a17e8efed8a79068a7be274b539c86ae7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 24 Sep 2025 00:28:03 +0000 Subject: [PATCH 1/2] Initial plan From af1977d927b2f0be78f39eb7fab628bacb869e10 Mon Sep 17 00:00:00 2001 From: Adam Ratzman Date: Tue, 23 Sep 2025 19:53:46 -0400 Subject: [PATCH 2/2] Set up extension build and sign pipeline (#11504) * first try extension CI * move above other stages * install vsce globally before package * explicitly publish extension * try add signing * try #2 * Revert "try #2" This reverts commit 8006a85a62f5ac533fef120db34c6e87f8b5aa17. * try to fix sign * try with artifacts packages dir property * remove verification * clean up * pr suggestions * run stages in parallel * see if this runs in parallel * add restore back * rename binlog * remove extra upload step * Move building extension to msbuild from the scripts. And always build extension on the internal pipeline * fix typo * fix build * Don't try to parse errors and warnings from yarn/npm invocations. Only use the exit code to determine success or failure * try publishing vsix * update paths * update paths 2 * Revert "update paths 2" This reverts commit e178308b073b23b57e0899390d6a4ab16d9f947d. * fix path to publish..? --------- Co-authored-by: Ankit Jain --- eng/Build.props | 5 ++ eng/Signing.props | 2 + eng/common/build.ps1 | 80 +----------------------- eng/common/build.sh | 66 +------------------ eng/pipelines/azure-pipelines.yml | 23 +++++++ eng/pipelines/templates/BuildAndTest.yml | 8 +++ extension/Extension.proj | 58 +++++++++++++++++ extension/loc/.gitignore | 1 - 8 files changed, 98 insertions(+), 145 deletions(-) create mode 100644 extension/Extension.proj delete mode 100644 extension/loc/.gitignore diff --git a/eng/Build.props b/eng/Build.props index dddc4194a9a..0a2ffbf2548 100644 --- a/eng/Build.props +++ b/eng/Build.props @@ -20,6 +20,11 @@ + + + + + @@ -54,6 +55,7 @@ + diff --git a/eng/common/build.ps1 b/eng/common/build.ps1 index 024cbdf8eb3..25f7a7629c7 100644 --- a/eng/common/build.ps1 +++ b/eng/common/build.ps1 @@ -98,81 +98,7 @@ function InitializeCustomToolset { } } -function Build-Extension { - $extensionDir = Join-Path $RepoRoot 'extension' - if (-not (Test-Path $extensionDir)) { - Write-Host "Extension directory not found at $extensionDir, skipping extension build" - return - } - - Write-Host "Building VS Code extension..." - - # Check if yarn is available - try { - $yarnVersion = & yarn --version 2>$null - if ($LASTEXITCODE -ne 0) { - throw "Yarn not found" - } - Write-Host "Found yarn version: $yarnVersion" - } - catch { - Write-Host "Warning: yarn is not installed or not available in PATH. Skipping extension build." - Write-Host "To build the extension, install yarn: https://yarnpkg.com/getting-started/install" - return - } - - Push-Location $extensionDir - try { - Write-Host "Running yarn install..." - & yarn install - if ($LASTEXITCODE -ne 0) { - throw "yarn install failed with exit code $LASTEXITCODE" - } - - Write-Host "Running yarn compile..." - & yarn compile - if ($LASTEXITCODE -ne 0) { - throw "yarn compile failed with exit code $LASTEXITCODE" - } - # Check if vsce is available and package the extension - try { - $vsceVersion = & vsce --version 2>$null - if ($LASTEXITCODE -eq 0) { - Write-Host "Found vsce version: $vsceVersion" - - # Read version from package.json - $packageJsonPath = Join-Path $extensionDir 'package.json' - if (Test-Path $packageJsonPath) { - Write-Host "Packaging extension" - & vsce package --pre-release - if ($LASTEXITCODE -ne 0) { - throw "vsce package failed with exit code $LASTEXITCODE" - } - - Write-Host "Extension packaged successfully" - } else { - Write-Host "Warning: package.json not found, skipping vsce package" - } - } else { - Write-Host "vsce not found, skipping package step" - } - } - catch { - Write-Host "Warning: Failed to package extension with vsce: $_" - # Don't throw here, just warn since this is optional - } - - Write-Host "VS Code extension build completed successfully" - } - catch { - Write-Host "Error building VS Code extension: $_" - throw - } - finally { - Pop-Location - } -} function Build { $toolsetBuildProj = InitializeToolset @@ -214,12 +140,8 @@ function Build { /p:Sign=$sign ` /p:Publish=$publish ` /p:RestoreStaticGraphEnableBinaryLogger=$binaryLog ` + /p:BuildExtension=$buildExtension ` @properties - - # Build VS Code extension if buildExtension parameter is specified - if ($buildExtension) { - Build-Extension - } } try { diff --git a/eng/common/build.sh b/eng/common/build.sh index be49c2401a9..7853291bbd2 100755 --- a/eng/common/build.sh +++ b/eng/common/build.sh @@ -226,67 +226,7 @@ function InitializeCustomToolset { fi } -function Build-Extension { - local extension_dir="$repo_root/extension" - if [[ ! -d "$extension_dir" ]]; then - echo "Extension directory not found at $extension_dir, skipping extension build" - return - fi - - echo "Building VS Code extension..." - - # Check if yarn is available - if ! command -v yarn &> /dev/null; then - echo "Warning: yarn is not installed or not available in PATH. Skipping extension build." - echo "To build the extension, install yarn: https://yarnpkg.com/getting-started/install" - return - fi - - local yarn_version - yarn_version=$(yarn --version 2>/dev/null) - echo "Found yarn version: $yarn_version" - - pushd "$extension_dir" > /dev/null - - echo "Running yarn install..." - if ! yarn install; then - echo "Error: yarn install failed" - popd > /dev/null - ExitWithExitCode 1 - fi - echo "Running yarn compile..." - if ! yarn compile; then - echo "Error: yarn compile failed" - popd > /dev/null - ExitWithExitCode 1 - fi - - # Check if vsce is available and package the extension - if command -v vsce &> /dev/null; then - local vsce_version - vsce_version=$(vsce --version 2>/dev/null) - echo "Found vsce version: $vsce_version" - - # Read version from package.json - local package_json_path="$extension_dir/package.json" - if [[ -f "$package_json_path" ]]; then - echo "Packaging extension" - if vsce package --pre-release; then - echo "Extension packaged successfully" - else - echo "Warning: vsce package failed" - fi - else - echo "Warning: package.json not found, skipping vsce package" - fi - else - echo "vsce not found, skipping package step" - fi - - echo "VS Code extension build completed successfully" - popd > /dev/null -} function Build { InitializeToolset @@ -324,13 +264,9 @@ function Build { /p:Sign=$sign \ /p:Publish=$publish \ /p:RestoreStaticGraphEnableBinaryLogger=$binary_log \ + /p:BuildExtension=$build_extension \ ${properties[@]+"${properties[@]}"} - # Build VS Code extension if build-extension parameter is specified - if [[ "$build_extension" == true ]]; then - Build-Extension - fi - ExitWithExitCode 0 } diff --git a/eng/pipelines/azure-pipelines.yml b/eng/pipelines/azure-pipelines.yml index c04534b1316..7e18669a05c 100644 --- a/eng/pipelines/azure-pipelines.yml +++ b/eng/pipelines/azure-pipelines.yml @@ -224,6 +224,29 @@ extends: script: | Get-ChildItem -Path "$(Build.SourcesDirectory)\artifacts\packages" -File -Recurse | Select-Object FullName, @{Name="Size(MB)";Expression={[math]::Round($_.Length/1MB,2)}} | Format-Table -AutoSize + - task: NodeTool@0 + displayName: 🟣Install node.js + inputs: + versionSpec: '20.x' + + - task: PowerShell@2 + displayName: 🟣Install yarn + inputs: + targetType: 'inline' + script: | + npm install -g yarn + yarn --version + workingDirectory: '$(Build.SourcesDirectory)' + + - task: PowerShell@2 + displayName: 🟣Install vsce + inputs: + targetType: 'inline' + script: | + npm install -g @vscode/vsce + vsce --version + workingDirectory: '$(Build.SourcesDirectory)' + - template: /eng/pipelines/templates/BuildAndTest.yml parameters: dotnetScript: $(Build.SourcesDirectory)/dotnet.cmd diff --git a/eng/pipelines/templates/BuildAndTest.yml b/eng/pipelines/templates/BuildAndTest.yml index 2ba3dfaaa87..72a7d68a6a0 100644 --- a/eng/pipelines/templates/BuildAndTest.yml +++ b/eng/pipelines/templates/BuildAndTest.yml @@ -36,6 +36,7 @@ steps: -restore -build -pack -sign $(_SignArgs) + -buildExtension -publish $(_PublishArgs) -configuration ${{ parameters.buildConfig }} /bl:${{ parameters.repoLogPath }}/build.binlog @@ -45,6 +46,13 @@ steps: /p:SkipTestProjects=true displayName: 🟣Build + - task: 1ES.PublishBuildArtifacts@1 + displayName: 🟣Publish vscode extension + condition: always() + inputs: + PathtoPublish: '${{ parameters.repoArtifactsPath }}/packages/Release/vscode' + ArtifactName: aspire-vscode-extension + - script: ${{ parameters.dotnetScript }} build tests/workloads.proj diff --git a/extension/Extension.proj b/extension/Extension.proj new file mode 100644 index 00000000000..51316758b5f --- /dev/null +++ b/extension/Extension.proj @@ -0,0 +1,58 @@ + + + $(DefaultTargetFramework) + $(MSBuildThisFileDirectory) + + + + + <_PackageJsonPath>$([MSBuild]::NormalizePath($(ExtensionSrcDir), 'package.json')) + <_VsixPath>$([MSBuild]::NormalizePath($(ArtifactsPackagesDir), 'aspire-vscode-$(Version).vsix')) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/extension/loc/.gitignore b/extension/loc/.gitignore deleted file mode 100644 index 23a9fedf565..00000000000 --- a/extension/loc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/xliff/