feat: YAML pipeline template autocomplete (AzDO + GHA)
All checks were successful
Build and Deploy iLSP / test (push) Successful in 25s
Build and Deploy iLSP / build-and-deploy (push) Successful in 1m34s

- Add scripts/sync_pipeline_templates.py — scans LRU AzDO and GHA template
  repos; outputs unified pipeline_templates_catalog.json (48 templates: 45
  AzDO + 3 GHA)
- Add scripts/template_sources.yml — source config (AzDO alias, GHA org)
- Add pipeline_templates_catalog.json — baked catalog (49 KB)
- Add ilsp/yaml_lsp/catalog.py — PipelineTemplateCatalog with completion item
  generators for template paths, param names, allowed values, GHA inputs
- Add ilsp/yaml_lsp/proxy.py — async WS↔TCP bridge with LSP frame buffering,
  per-connection document tracking, AzDO/GHA context detection, and completion
  injection (LRU items sortText 0_, standard items downgraded to 9_)
- Wire yaml_ws_handler into server.py (replaces raw _ws_proxy call)
- Load PipelineTemplateCatalog at startup; reload + health report template count
- Update push_catalogs.sh to push pipeline_templates_catalog.json
- Update Dockerfile to bake pipeline_templates_catalog.json as image fallback
- Add tests/test_yaml_catalog.py (14 tests) + tests/test_yaml_proxy.py (18 tests)
  All 67 tests green
This commit is contained in:
Henrik Jess Nielsen
2026-05-10 15:59:37 +02:00
parent 5501254b55
commit 333d986e76
11 changed files with 3328 additions and 12 deletions

View File

@@ -0,0 +1,26 @@
# Pipeline template sources for YAML autocomplete
# Consumed by scripts/sync_pipeline_templates.py
sources:
# AzDO template repos — referenced via @alias in pipeline YAML
azdo:
- alias: pipeline-templates
local_path: ~/IdeaProjects/Bitbucket/Drift/pipeline-templates
# Relative subpaths to scan (empty = entire repo)
scan_dirs:
- tasks
- stages
- jobs
- variables
# File extensions to scan
extensions: [.yaml, .yml]
# GitHub Actions reusable workflows — referenced via uses: org/repo/.github/workflows/file@ref
gha:
- org: LRU-Digital
local_base: ~/IdeaProjects/GitHub/LRU-Digital
# Only scan repos that have reusable workflows (workflow_call trigger)
# Leave empty to scan all repos under local_base
repos: []
default_ref: main