Skip to content

implement ADO packaging pipeline for FLC & SDK#552

Open
prathikr wants to merge 100 commits intomainfrom
prathikrao/foundry-local-packaging-pipeline
Open

implement ADO packaging pipeline for FLC & SDK#552
prathikr wants to merge 100 commits intomainfrom
prathikrao/foundry-local-packaging-pipeline

Conversation

@prathikr
Copy link
Copy Markdown
Contributor

@prathikr prathikr commented Mar 25, 2026

Foundry Local Packaging Pipeline

Summary

This PR introduces the Foundry Local Packaging Pipeline, a unified ADO pipeline that builds, signs, and tests Foundry Local Core (FLC) for all platforms, packages it as NuGet and Python wheels, then builds, signs, and tests the C#, JS, Python, and Rust SDKs — for both standard and WinML variants.

Pipeline stages:

  1. Build FLC — Native AOT binaries for win-x64, win-arm64, linux-x64, osx-arm64
  2. Package FLC — Multi-platform NuGet package + Python wheels from the built binaries
  3. Build SDKs — C#, JS, Python, Rust using the packaged FLC
  4. Test SDKs — Validate each SDK against the pipeline-built FLC

Produced artifacts: flc-nuget, flc-nuget-winml, flc-wheels, flc-wheels-winml, cs-sdk, cs-sdk-winml, js-sdk, js-sdk-winml, python-sdk, python-sdk-winml, rust-sdk, rust-sdk-winml

SDK Changes:

  1. Adds ability for python sdk to skip installing native depenencies and use pre-installed binaries like foundry-local-core, onnxruntime, onnxruntime-genai
  2. Adjusts APIs to leverage new download_and_register_eps native interop call for manually downloading and registering EPs

Test coverage

All SDK tests currently run on win-x64 only. Additional platform test jobs are blocked on infrastructure:

  • Windows ARM64 — waiting on a 1ES-hosted win-arm64 pool
  • macOS ARM64 — waiting on a 1ES-hosted macOS ARM64 pool
  • Linux x64 — waiting on the Linux onnxruntime dependency to be stabilized

TODOs are tracked in the pipeline YAML for each.

Build strategy

All FLC builds (including win-arm64 and osx-arm64) run on x64 machines because .NET Native AOT supports cross-compilation. The win-arm64 build cross-compiles from x64 Windows — see Cross-compilation docs. Linux builds run on its own respective x64 hosted image.

Origin

  • Foundry Local Core build steps were lifted from neutron-server/.pipelines/FoundryLocalCore/
  • SDK build/test steps were lifted from Foundry-Local/.github/

Copilot AI review requested due to automatic review settings March 25, 2026 21:17
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
foundry-local Ready Ready Preview, Comment Mar 28, 2026 11:38pm

Request Review

baijumeswani
baijumeswani previously approved these changes Mar 25, 2026
@prathikr prathikr requested a review from baijumeswani March 25, 2026 21:19
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 Azure DevOps (1ES) packaging pipeline that builds Foundry Local Core (from neutron-server), then uses the produced Core NuGet to build/test/package the C# and JS SDKs in this repo (including signing).

Changes:

  • Introduces a new foundry-local-packaging.yml pipeline orchestrating Core build, Core NuGet packaging, and SDK builds.
  • Adds reusable templates for building Core per-RID, packaging the Core NuGet, and building/packing the C# and JS SDKs.
  • Integrates ESRP signing for produced NuGet artifacts (Core + C# SDK).

Reviewed changes

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

Show a summary per file
File Description
.pipelines/foundry-local-packaging.yml Orchestrates multi-stage ADO pipeline for Core + SDK packaging.
.pipelines/templates/build-core-steps.yml Builds/publishes per-platform Core native AOT binaries and stages them as artifacts.
.pipelines/templates/package-core-steps.yml Collects per-platform Core artifacts into NuGet layout, then packs/signs the Core NuGet.
.pipelines/templates/build-cs-steps.yml Restores/builds/tests/signs/packs the C# SDK using the locally built Core package.
.pipelines/templates/build-js-steps.yml Builds/tests/packs the JS SDK and overwrites installed Core binaries from the locally built Core NuGet.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

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

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


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

prathikr and others added 12 commits March 28, 2026 15:47
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+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.

3 participants