The document provides a comprehensive decision framework for a small GRDC team deciding whether to keep a React + Azure Function (.NET 8/C#) project in Azure DevOps or migrate it to GitHub. It compares GitHub Advanced Security (GHAS) with GitHub Advanced Security for Azure DevOps (GHAzDO), highlighting the unique AI‑driven Copilot Autofix advantage of GHAS. It evaluates GitHub Actions versus Azure Pipelines, noting functional parity but differing ergonomics, especially around Azure service connections and deployment gates. The cost and risk analysis shows that mid‑project migration adds governance risk and regression testing overhead, while a post‑delivery migration is low‑risk, fast (5‑10 min per repo using the gh ado2gh CLI), and aligns with Microsoft’s roadmap that bundles Azure DevOps Basic licenses with GitHub Enterprise. A staged pilot approach is recommended: create a shadow GitHub repo, set up OIDC‑based Azure connections, draft equivalent Actions workflows, validate in a non‑production slot, then cut over after delivery, optionally keeping Azure Pipelines pointed at the new repo or switching to Actions. The broader strategic view stresses that agentic AI features (Copilot Workspace, Autofix) are GitHub‑only and will increasingly differentiate productivity. The second part analyses the existing NVT Long‑Term Yield (LTY) SPA (app.nvt.grdc.com.au/lty/table), extracting its deep‑linkable URL routing, multi‑dimensional data model (crop, state, region, site, year), colour‑coded yield bands, and UI patterns (filter cascade, virtualised data table, onboarding walkthrough). Based on this, the guide recommends a front‑end stack: TanStack Table v8, TanStack Virtual, TanStack Query, React Router v6 with URL‑encoded filter state, and a lightweight state manager (Zustand/Jotai). It outlines backend Azure Function endpoints to serve cascade data and a pre‑computed MET matrix with yield‑index values, and provides code snippets for URL state hooks, data fetching, colour‑band mapping, and virtualised table rendering. Accessibility (WCAG AA colour contrast) and performance (row/column virtualization) requirements are emphasized, along with a testing strategy (Playwright/Cypress integration tests in CI). Governance considerations for GRDC (audit trails, deployment approvals) are woven throughout. The document concludes that the project is a suitable migration pilot if the shadow setup is isolated from active delivery, allowing the team to gain experience with GitHub’s AI tooling and modern front‑end architecture without jeopardising the current delivery schedule.
Topics
Decision Framework Overview: Stay in Azure DevOps for Delivery, Migrate Post‑Delivery
High‑level recommendation to keep the current Azure DevOps pipeline for the active GRDC delivery and perform a structured migration after the project is shipped.