Skip to content
Open
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.ai.agents/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ displayName: Foundry agents (Preview)
description: Ship agents with Microsoft Foundry from your terminal. (Preview)
usage: azd ai agent <command> [options]
# NOTE: Make sure version.txt is in sync with this version.
version: 0.1.21-preview
version: 0.1.22-preview
requiredAzdVersion: ">1.23.13"
language: go
capabilities:
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.ai.agents/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.21-preview
0.1.22-preview
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.ai.finetune/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ namespace: ai.finetuning
displayName: Foundry Fine Tuning (Preview)
description: Extension for Foundry Fine Tuning. (Preview)
usage: azd ai finetuning <command> [options]
version: 0.0.17-preview
version: 0.0.18-preview
language: go
capabilities:
- custom-commands
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.ai.finetune/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.0.17-preview
0.0.18-preview
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.ai.models/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ namespace: ai.models
displayName: Foundry Custom Models (Preview)
description: Extension for managing custom models in Azure AI Foundry. (Preview)
usage: azd ai models <command> [options]
version: 0.0.5-preview
version: 0.0.6-preview
language: go
capabilities:
- custom-commands
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.ai.models/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.0.5-preview
0.0.6-preview
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.appservice/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ displayName: Azure App Service
description: Extension for managing Azure App Service resources.
usage: azd appservice <command> [options]
# NOTE: Make sure version.txt is in sync with this version.
version: 0.1.0
version: 0.1.1
language: go
capabilities:
- custom-commands
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.appservice/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.0
0.1.1
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.coding-agent/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ language: go
namespace: coding-agent
usage: azd coding-agent <command> [options]
# NOTE: Make sure version.txt is in sync with this version.
version: 0.6.1
version: 0.6.2
2 changes: 1 addition & 1 deletion cli/azd/extensions/azure.coding-agent/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.6.1
0.6.2
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace: ai.builder
displayName: azd AI Builder
description: This extension provides custom commands for building AI applications using Azure Developer CLI.
usage: azd ai builder <command> [options]
version: 0.2.0
version: 0.2.1
language: go
capabilities:
- custom-commands
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/microsoft.azd.ai.builder/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.2.0
0.2.1
2 changes: 1 addition & 1 deletion cli/azd/extensions/microsoft.azd.concurx/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ id: microsoft.azd.concurx
language: go
namespace: concurx
usage: azd concurx <command> [options]
version: 0.1.0
version: 0.1.1
2 changes: 1 addition & 1 deletion cli/azd/extensions/microsoft.azd.concurx/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.1.0
0.1.1
2 changes: 1 addition & 1 deletion cli/azd/extensions/microsoft.azd.demo/extension.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ namespace: demo
displayName: Demo Extension
description: This extension provides examples of the azd extension framework.
usage: azd demo <command> [options]
version: 0.6.0
version: 0.6.1
language: go
capabilities:
- custom-commands
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/microsoft.azd.demo/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.6.0
0.6.1
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ language: go
displayName: azd extensions Developer Kit
description: This extension provides a set of tools for azd extension developers to test and debug their extensions.
usage: azd x <command> [options]
version: 0.10.0
version: 0.10.1
capabilities:
- custom-commands
- metadata
Expand Down
2 changes: 1 addition & 1 deletion cli/azd/extensions/microsoft.azd.extensions/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.10.0
0.10.1
4 changes: 4 additions & 0 deletions eng/pipelines/templates/jobs/build-azd-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ jobs:

- template: /eng/pipelines/templates/steps/setup-go.yml

- template: /eng/pipelines/templates/steps/set-extension-version-cd.yml
parameters:
AzdExtensionDirectory: ${{ parameters.AzdExtensionDirectory }}

- task: PowerShell@2
inputs:
pwsh: true
Expand Down
4 changes: 4 additions & 0 deletions eng/pipelines/templates/jobs/cross-build-azd-extension.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ jobs:
parameters:
Condition: false

- template: /eng/pipelines/templates/steps/set-extension-version-cd.yml
parameters:
AzdExtensionDirectory: ${{ parameters.AzdExtensionDirectory }}

- task: PowerShell@2
displayName: Set extension version variable
inputs:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,10 @@ stages:
steps:
- checkout: self

- template: /eng/pipelines/templates/steps/set-extension-version-cd.yml
parameters:
AzdExtensionDirectory: ${{ parameters.AzdExtensionDirectory }}

- task: PowerShell@2
displayName: Set extension version variable
inputs:
Expand Down
101 changes: 101 additions & 0 deletions eng/pipelines/templates/stages/publish-extension-daily.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
parameters:
- name: SanitizedExtensionId
type: string
- name: AzdExtensionId
type: string

stages:
- stage: PublishDaily
dependsOn: Sign
condition: >-
and(
succeeded(),
ne(variables['Skip.Release'], 'true'),
or(
in(variables['BuildReasonOverride'], 'IndividualCI', 'BatchedCI'),
and(
eq('', variables['BuildReasonOverride']),
in(variables['Build.Reason'], 'IndividualCI', 'BatchedCI')
)
)
)

variables:
- template: /eng/pipelines/templates/variables/image.yml
- template: /eng/pipelines/templates/variables/globals.yml

jobs:
- deployment: Publish_Daily
environment: none

pool:
name: azsdk-pool
image: ubuntu-22.04
os: linux

templateContext:
type: releaseJob
isProduction: false
inputs:
- input: pipelineArtifact
artifactName: release
targetPath: release
- input: pipelineArtifact
artifactName: release-metadata
targetPath: release-metadata

strategy:
runOnce:
deploy:
steps:
- checkout: self

- template: /eng/pipelines/templates/steps/extension-set-metadata-variables.yml
parameters:
Use1ESArtifactTask: true

- template: /eng/pipelines/templates/steps/publish-extension.yml
parameters:
PublishUploadLocations: ${{ parameters.SanitizedExtensionId }}/daily;${{ parameters.SanitizedExtensionId }}/daily/archive/$(EXT_VERSION)
CreateGitHubRelease: false

- task: PowerShell@2
displayName: Generate daily registry entry
inputs:
pwsh: true
targetType: filePath
filePath: eng/scripts/Update-ExtensionDailyRegistry.ps1
arguments: >-
-SanitizedExtensionId "${{ parameters.SanitizedExtensionId }}"
-AzdExtensionId "${{ parameters.AzdExtensionId }}"
-Version "$(EXT_VERSION)"
-StorageBaseUrl "$(publish-storage-static-host)/azd/extensions/${{ parameters.SanitizedExtensionId }}/daily"
-OutputPath "$(Pipeline.Workspace)/registry-entry/${{ parameters.AzdExtensionId }}.json"
-TemplatePath "eng/templates/extensions-registry-daily.json.template"
-ReleasePath "$(Pipeline.Workspace)/release"
-ExtensionYamlPath "$(Pipeline.Workspace)/release-metadata/extension.yaml"

- task: AzurePowerShell@5
displayName: Upload daily registry entry
inputs:
azureSubscription: 'Azure SDK Artifacts'
azurePowerShellVersion: LatestVersion
pwsh: true
ScriptType: InlineScript
Inline: |
$entryFile = "$(Pipeline.Workspace)/registry-entry/${{ parameters.AzdExtensionId }}.json"
$blobPath = "$(publish-storage-location)/`$web/azd/extensions/daily-registry-entries/${{ parameters.AzdExtensionId }}.json"
$maxRetries = 3
for ($i = 1; $i -le $maxRetries; $i++) {
azcopy copy $entryFile $blobPath --overwrite=true
if ($LASTEXITCODE -eq 0) { break }
if ($i -eq $maxRetries) {
Write-Error "Failed to upload registry entry after $maxRetries attempts (exit code $LASTEXITCODE)"
exit 1
}
Write-Host "Upload attempt $i failed, retrying in $($i * 5)s..."
Start-Sleep -Seconds ($i * 5)
}
Write-Host "Registry entry uploaded to $blobPath"
env:
AZCOPY_AUTO_LOGIN_TYPE: 'PSCRED'
157 changes: 157 additions & 0 deletions eng/pipelines/templates/stages/publish-extension-pr.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
parameters:
- name: SanitizedExtensionId
type: string
- name: AzdExtensionId
type: string

stages:
- stage: PublishForPR
dependsOn: Sign
condition: >-
and(
succeeded(),
ne(variables['Skip.Release'], 'true'),
or(
eq('PullRequest', variables['BuildReasonOverride']),
and(
eq('', variables['BuildReasonOverride']),
eq(variables['Build.Reason'], 'PullRequest')
)
)
)

variables:
- template: /eng/pipelines/templates/variables/image.yml
- template: /eng/pipelines/templates/variables/globals.yml

jobs:
- deployment: Publish_Extension_For_PR
environment: none

pool:
name: azsdk-pool
image: ubuntu-22.04
os: linux

templateContext:
type: releaseJob
isProduction: false
inputs:
- input: pipelineArtifact
artifactName: release
targetPath: release
- input: pipelineArtifact
artifactName: release-metadata
targetPath: release-metadata

strategy:
runOnce:
deploy:
steps:
- checkout: self

- pwsh: |
$PRNumber = '$(System.PullRequest.PullRequestNumber)'
if ($env:PRNUMBEROVERRIDE) {
Write-Host "PR Number override: $($env:PRNUMBEROVERRIDE)"
$PRNumber = "$($env:PRNUMBEROVERRIDE)"
}
if (-not $PRNumber -or $PRNumber -match '^\$\(') {
Write-Error "PR number could not be determined. Ensure this runs in a PR build or set PRNUMBEROVERRIDE."
exit 1
}
Write-Host "##vso[task.setvariable variable=PRNumber]$PRNumber"
displayName: Set PR Number Variable

- template: /eng/pipelines/templates/steps/extension-set-metadata-variables.yml
parameters:
Use1ESArtifactTask: true

- template: /eng/pipelines/templates/steps/publish-extension.yml
parameters:
PublishUploadLocations: ${{ parameters.SanitizedExtensionId }}/pr/$(PRNumber)
CreateGitHubRelease: false

- task: PowerShell@2
displayName: Generate PR registry entry
inputs:
pwsh: true
targetType: filePath
filePath: eng/scripts/Update-ExtensionDailyRegistry.ps1
arguments: >-
-SanitizedExtensionId "${{ parameters.SanitizedExtensionId }}"
-AzdExtensionId "${{ parameters.AzdExtensionId }}"
-Version "$(EXT_VERSION)"
-StorageBaseUrl "$(publish-storage-static-host)/azd/extensions/${{ parameters.SanitizedExtensionId }}/pr/$(PRNumber)"
-OutputPath "$(Pipeline.Workspace)/registry-entry/${{ parameters.AzdExtensionId }}.json"
-TemplatePath "eng/templates/extensions-registry-daily.json.template"
-ReleasePath "$(Pipeline.Workspace)/release"
-ExtensionYamlPath "$(Pipeline.Workspace)/release-metadata/extension.yaml"

- task: AzurePowerShell@5
displayName: Upload PR registry entry
inputs:
azureSubscription: 'Azure SDK Artifacts'
azurePowerShellVersion: LatestVersion
pwsh: true
ScriptType: InlineScript
Inline: |
$entryFile = "$(Pipeline.Workspace)/registry-entry/${{ parameters.AzdExtensionId }}.json"
$blobPath = "$(publish-storage-location)/`$web/azd/extensions/pr-registry-entries/$(PRNumber)/${{ parameters.AzdExtensionId }}.json"
$maxRetries = 3
for ($i = 1; $i -le $maxRetries; $i++) {
azcopy copy $entryFile $blobPath --overwrite=true
if ($LASTEXITCODE -eq 0) { break }
if ($i -eq $maxRetries) {
Write-Error "Failed to upload registry entry after $maxRetries attempts (exit code $LASTEXITCODE)"
exit 1
}
Write-Host "Upload attempt $i failed, retrying in $($i * 5)s..."
Start-Sleep -Seconds ($i * 5)
}
Write-Host "Registry entry uploaded to $blobPath"
env:
AZCOPY_AUTO_LOGIN_TYPE: 'PSCRED'

- pwsh: |
$storageHost = "$(publish-storage-static-host)"
$extId = "${{ parameters.AzdExtensionId }}"
$sanitizedId = "${{ parameters.SanitizedExtensionId }}"
$prNumber = "$(PRNumber)"
$registryUrl = "$storageHost/azd/extensions/pr-registry-entries/$prNumber/$extId.json"
$binaryBase = "$storageHost/azd/extensions/$sanitizedId/pr/$prNumber"

$content = @"
<!-- #comment-ext-pr-$extId -->
## azd Extension Install Instructions — ``$extId``

> :warning: **These are unsigned PR builds for testing only.** Do not use in production.

### Install from PR build

``````bash
azd ext source add -n pr-$prNumber -t url -l "$registryUrl"
azd ext install $extId --source pr-$prNumber
``````

### Standalone Binaries

| Platform | Download |
|----------|----------|
| Linux x86_64 | $binaryBase/$sanitizedId-linux-amd64.tar.gz |
| Linux ARM64 | $binaryBase/$sanitizedId-linux-arm64.tar.gz |
| macOS x86_64 | $binaryBase/$sanitizedId-darwin-amd64.zip |
| macOS ARM64 | $binaryBase/$sanitizedId-darwin-arm64.zip |
| Windows x86_64 | $binaryBase/$sanitizedId-windows-amd64.zip |
| Windows ARM64 | $binaryBase/$sanitizedId-windows-arm64.zip |
"@
$file = New-TemporaryFile
Set-Content -Path $file -Value $content
Write-Host "##vso[task.setvariable variable=CommentBodyFile]$file"
displayName: Generate PR comment body

- template: /eng/pipelines/templates/steps/update-prcomment.yml
parameters:
PrNumber: $(PRNumber)
BodyFile: $(CommentBodyFile)
Tag: '<!-- #comment-ext-pr-${{ parameters.AzdExtensionId }} -->'
Loading
Loading