Skip to content

Add CI validation workflow and collection lifecycle#76

Open
diberry wants to merge 9 commits intoAzure-Samples:mainfrom
diberry:ci/workflow-and-lifecycle
Open

Add CI validation workflow and collection lifecycle#76
diberry wants to merge 9 commits intoAzure-Samples:mainfrom
diberry:ci/workflow-and-lifecycle

Conversation

@diberry
Copy link
Copy Markdown
Collaborator

@diberry diberry commented Apr 30, 2026

Summary

Adds a GitHub Actions workflow that validates all samples can build and run, plus standardizes collection lifecycle across all samples.

⚠️ Depends on PR #74 — diff will be large until #74 merges article2/select-algorithm into main, at which point only the net-new changes will show.

Changes

  • Workflow (.github/workflows/validate-samples.yml): Dual-mode (build-only on PR, full-run on manual trigger), serialized execution, secret masking
  • Lifecycle standardization: All samples now drop-if-exists at start and always-drop at end for clean CI runs
  • TypeScript type safety: MongoSearchResult interface, env validation, safe finally block

Testing

  • Workflow runs serially to avoid collection name collisions
  • Each sample creates its own collections and cleans up after itself

diberry and others added 9 commits April 29, 2026 12:19
Implement vector index algorithm comparison samples (IVF, HNSW, DiskANN)
for Python, TypeScript, Go, Java, and C#/.NET.

Each sample demonstrates:
- IVF index creation (numLists=10) for <10K documents
- HNSW index creation (m=16, efConstruction=64) for 10K-50K documents
- DiskANN index creation (maxDegree=20, lBuild=10) for 50K+ documents
- Vector search using \ aggregation with cosmosSearch
- Passwordless auth via DefaultAzureCredential/OIDC

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Java: Fix TOKEN_RESOURCE from cosmos.azure.com to ossrdbms-aad.database.windows.net
- TypeScript IVF: Remove inconsistent returnStoredSource field
- .NET .env.example: Fix vector field name to contentVector, remove unused AZURE_TENANT_ID
- Java .env.example: Remove unused AZURE_MANAGED_IDENTITY_PRINCIPAL_ID
- Python .env.example: Fix API version to 2023-05-15 for consistency

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…onBuilder

- Remove DotNetEnv package, add Microsoft.Extensions.Configuration packages
- Add appsettings.json with strongly-typed config sections
- Add Models/Configuration.cs with AppConfiguration classes
- Update Program.cs to use ConfigurationBuilder (json + env var override)
- Update Utils.cs to accept AppConfiguration parameter
- Update all demo Run() methods to receive config from Program.cs
- Delete .env.example (no longer needed)
- Update README to reference appsettings.json + azd env get-values

Matches Article 1 (vector-search-dotnet) configuration pattern.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
All non-.NET Article 2 READMEs now show azd env get-values > .env
as the primary config method after azd up, with manual cp .env.example
as fallback. Matches Article 1 README pattern.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Runs all 9 combinations (3 algorithms x 3 metrics) in a single
execution with formatted comparison output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- All 5 runners now: drop collection → create fresh → upload data →
  create indexes → run comparisons → drop collection on exit
- Removed 15 individual algorithm files (ivf/hnsw/diskann per language)
- Updated entry points (main.go, Main.java, Program.cs) to only run compare-all
- Simplified package.json scripts (TypeScript)
- All languages use DefaultAzureCredential for auth

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…rop at end

All 10 sample directories now follow the same pattern:
- START: conditionally drop collection only if it exists
- END: always drop collection for cleanup (in finally/defer block)

Languages updated: TypeScript, Python, Go, Java, .NET

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add validate-samples.yml workflow (dual-mode: build-only + full-run)
- Serialized execution: TS -> Py -> Go -> Java -> .NET
- Secret masking for all env vars
- Collection lifecycle: drop-if-exists at start, always drop at end
- TypeScript type safety improvements in compare-all.ts

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.

1 participant