Pipelines
CI/CD for the eSHARS ecosystem is split across two systems:
- Azure DevOps (
eshars-ops/pipelines/) — the build pipelines for every application repo, plus the legacy release pipeline for the HISD portal. - GitHub Actions (
eshars-ops/.github/workflows/) — all infrastructure deployment (theInfra: 0–6stand-up chain), runbook deployment, and the Port self-service actions. See Stand-up Workflows. The HISD repo’s tier-aware app CD (ci-build.yml+cd-deploy.yml) also runs on GitHub Actions — see Configuration & Secrets.
Build pipelines (Azure DevOps)
Each is a thin wrapper (trigger: main + develop) over a shared template:
| File | Repo | Runtime | Notes |
|---|---|---|---|
hisd.yml | HISD | .NET Framework (Windows) | Legacy portal — uses VSBuild, not dotnet. Includes HisdDb/HisdDbReport/HisdLogDb SQL Server Database Projects |
mobile-api.yml | eshars-mobile-api | .NET (Linux) | Clean Architecture API |
mobile-ui.yml | eshars-mobile-ui | Flutter/Dart | Multi-platform. Fastlane for iOS. Code signing secrets from eshars-mobile-signing variable group |
mgmt.yml | eshars_mgmt | .NET (Linux) | Management portal |
cli.yml | eshars-cli | .NET (Linux) | CLI tool |
docs.yml | eshars-docs | MkDocs | main trigger only |
Templates
Shared step sequences in templates/:
| Template | Used By | What It Does |
|---|---|---|
dotnet-framework-build.yml | hisd | NuGet restore → VSBuild → VSTest |
dotnet-build.yml | mobile-api, mgmt, cli | dotnet restore → build → test |
flutter-build.yml | mobile-ui | Flutter install → pub get → analyze → test |
mkdocs-build.yml | docs | Python setup → pip install → mkdocs build |
hisd-deploy-stage.yml, hisd-deploy-jobscheduler.yml | hisd-release | Per-stage deploy steps (token replace, configBuilders, slot deploy, DbUpgrader, SSRS publish, JobScheduler) |
HISD release pipeline (hisd-release.yml)
The legacy app-deploy path, converted 2026-03 from the classic “eSHARS Release”
definition. Resource-triggered by a successful eSHARS Build, runs on the
self-hosted eSHARS-Agents pool. Stage flow:
Development (auto) → QA (manual approval — 1 of Kisha Pinkney / Akhil Mittal, 48h timeout) → UAT (auto) → Staging (auto) → Production (auto after Staging). Training and Regression branch independently off Development.
Per-environment variables live in pipelines/environments/*.yml; these target
the legacy app estate (wa-eshars-nonprod/wa-eshars-prod with per-env
slots, kv-eshars-{env} vaults). The rebuilt estate is deployed by the HISD
repo’s tier-aware GitHub Actions CD instead — the two paths coexist during the
migration.