Skip to content

Enable dev extension builds on CI#7497

Draft
rajeshkamal5050 wants to merge 4 commits intomainfrom
ext-daily-builds
Draft

Enable dev extension builds on CI#7497
rajeshkamal5050 wants to merge 4 commits intomainfrom
ext-daily-builds

Conversation

@rajeshkamal5050
Copy link
Copy Markdown
Contributor

@rajeshkamal5050 rajeshkamal5050 commented Apr 3, 2026

Daily extension builds to Azure Storage, mirrors core CLI daily build pattern.

On every CI push to main, extensions get signed and uploaded to storage. A registry-daily.json on storage gets updated with each build so consumers can discover daily builds.

What changed

  • New publish-extension-daily.yml stage — depends on Sign, uploads to storage (no GitHub Release)
  • publish-extension.yml — added CreateGitHubRelease param so daily can skip it
  • release-azd-extension.yml — wired daily publish for CI builds
  • Set-ExtensionVersionInBuild.ps1 — appends -daily.<BuildId> for CI builds, mirrors core CLI pattern. Manual releases unaffected.
  • Update-ExtensionDailyRegistry.ps1 + JSON template — generates registry entries from extension.yaml metadata and signed artifact checksums
  • All 9 extensions version bumped (patch) so dailies are ahead of released versions

Consumer usage

azd ext source add -n daily -t url -l "https://azuresdkartifacts.z5.web.core.windows.net/azd/extensions/registry-daily.json"
azd ext install azure.ai.agents --source daily

Closes #7317

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an internal CI path for producing “rolling” unsigned extension builds from main, publishing them to stable *-dev GitHub release tags, and providing a dev registry JSON that points azd’s extension installer at those artifacts.

Changes:

  • Adds a publish-extension-dev.yml stage that packages CI-built extension binaries and publishes them to a {SanitizedExtensionId}-dev GitHub prerelease.
  • Wires the dev publish stage into the extension release pipeline template for internal CI runs (IndividualCI / BatchedCI).
  • Introduces cli/azd/extensions/registry-dev.json as a static registry pointing at the dev release download URLs.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

File Description
eng/pipelines/templates/stages/release-azd-extension.yml Conditionally includes the new dev publish stage for internal CI builds.
eng/pipelines/templates/stages/publish-extension-dev.yml New stage to delete/recreate a *-dev GitHub prerelease and upload packaged artifacts.
cli/azd/extensions/registry-dev.json New dev registry pointing to *-dev release artifacts for 8 extensions.

@rajeshkamal5050 rajeshkamal5050 marked this pull request as draft April 3, 2026 21:37
@rajeshkamal5050 rajeshkamal5050 force-pushed the ext-daily-builds branch 3 times, most recently from 7ae260f to 93fee62 Compare April 3, 2026 21:48
Mirrors the core CLI daily build pattern. On CI builds (push to main),
sign and upload extension binaries to Azure Storage.

- publish-extension-daily.yml — new stage, depends on Sign, uploads to
  {ext-id}/daily (latest) and {ext-id}/daily/archive/{version} (history)
- publish-extension.yml — add CreateGitHubRelease param (default true)
  so daily can skip GitHub Release and just upload to storage
- release-azd-extension.yml — wire daily publish for CI builds
- update-daily-registry.yml — download existing registry-daily.json from
  storage, merge in the current extension entry with checksums and
  storage URLs, upload back. Self-maintaining across extension builds.

Closes #7317

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rajeshkamal5050 and others added 3 commits April 3, 2026 17:22
Pipeline changes:
- publish-extension-daily.yml — daily stage, depends on Sign, uploads
  to {ext-id}/daily and {ext-id}/daily/archive/{version}
- publish-extension.yml — add CreateGitHubRelease param so daily can
  skip GitHub Release and just upload to storage
- release-azd-extension.yml — wire daily publish for CI builds
- update-extension-daily-registry.yml — calls Update-ExtensionDailyRegistry.ps1
  to merge extension entry into registry-daily.json on storage
- extension-registry-daily-template.json — JSON template with placeholders

Version bumps:
- Bump all extension version.txt and extension.yaml so daily builds
  are ahead of the last released versions

Closes #7317

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Mirrors core CLI pattern: appends -daily.<BuildId> for CI builds,
-pr.<BuildId> for PR builds, skips for Manual (release) builds.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Trim version.txt on read (Set-ExtensionVersionVariable, Set-ExtensionVersionInBuild)
- Validate empty version.txt in Set-ExtensionVersionInBuild
- Make BuildReason/BuildId mandatory params
- Wrap Get-FileHash in try/catch
- Validate required YAML fields (namespace, displayName, description) after parsing
- Log parsed extension metadata for pipeline diagnostics
- Fix upload error handling (don't set ErrorActionPreference=Continue before upload)
- Guard CreateGitHubRelease against empty TagPrefix/TagVersion

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Extensions] - Create a better story for private/internal builds

2 participants