-
Notifications
You must be signed in to change notification settings - Fork 267
Azure DevOps Extension Release Pipeline #6507
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
…indows and Linux (as it used to be compatible for Linux only)" This reverts commit 89438ae.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR sets up a complete Azure DevOps Extension Release Pipeline for the setupAzd task, enabling automated building, testing, signing, and publishing to the Azure DevOps marketplace.
Changes:
- Added CI/CD pipeline configuration files for building, testing, signing, and publishing the Azure DevOps extension
- Enhanced test suite with environment variable configuration and increased timeouts for better macOS compatibility
- Created PowerShell scripts for packaging and testing the extension
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
ext/azuredevops/setupAzd/tests/_suite.ts |
Added environment variables to disable actual tool downloads during tests and increased timeouts for macOS |
ext/azuredevops/ci-test.ps1 |
New script to run tests for the setupAzd extension |
ext/azuredevops/ci-package.ps1 |
New script to build and package the Azure DevOps extension into a VSIX file |
eng/pipelines/templates/stages/azuredevops-build-and-test.yml |
Stage template defining build matrix for Windows, Linux, and macOS |
eng/pipelines/templates/stages/azuredevops-sign.yml |
Stage template for signing the VSIX extension package |
eng/pipelines/templates/stages/azuredevops-publish-manual.yml |
Stage template for manually publishing signed extensions to the marketplace |
eng/pipelines/templates/jobs/azuredevops-build.yml |
Job template implementing build, test, and package steps for each platform |
eng/pipelines/release-azuredevops.yml |
Main pipeline orchestrating the complete release workflow |
eng/pipelines/templates/stages/1es-redirect.yml |
Updated azure-sdk-build-tools reference to newer version |
.vscode/cspell-devops-ext.txt |
Added TOOLSDIRECTORY to the spell-check dictionary |
| @@ -0,0 +1,2 @@ | |||
| #!/usr/bin/env pwsh | |||
| npm --prefix $PSScriptRoot/setupAzd/ test | |||
Copilot
AI
Jan 13, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The script does not check the exit code of the npm test command. While the default PowerShell behavior will fail the pipeline task if npm exits with a non-zero code, it's a best practice to explicitly check $LASTEXITCODE for consistency with the ci-package.ps1 script pattern. Consider adding error handling similar to ci-package.ps1.
| npm --prefix $PSScriptRoot/setupAzd/ test | |
| npm --prefix $PSScriptRoot/setupAzd/ test | |
| if ($LASTEXITCODE -ne 0) { | |
| Write-Error "npm test failed with exit code $LASTEXITCODE." | |
| exit $LASTEXITCODE | |
| } |
| environment: package-publish | ||
| pool: | ||
| name: azsdk-pool | ||
| image: ubuntu-24.04 |
Copilot
AI
Jan 13, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The image version 'ubuntu-24.04' is hard-coded here, whereas the vscode-publish-manual.yml uses '$(LINUXVMIMAGE)' from the image template variables. For consistency and easier maintenance, consider using the variable reference pattern instead of hard-coding the image version.
| image: ubuntu-24.04 | |
| image: $(LINUXVMIMAGE) |
| - deployment: Publish_Release | ||
| environment: package-publish | ||
| pool: | ||
| name: azsdk-pool |
Copilot
AI
Jan 13, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The pool name 'azsdk-pool' is hard-coded here, while other pipeline files use '$(LINUXPOOL)' from the globals template. For consistency and easier maintenance across the pipeline, consider using the variable reference '$(LINUXPOOL)' instead.
| name: azsdk-pool | |
| name: $(LINUXPOOL) |
See the ill-fated #6487 which got stuck in some partial state and was unable to merge.