Pipelines

July 10, 2026 ยท View on GitHub

CI/CD that drives infrastructure provisioning, content deployment, and operational tooling. The repository ships seven Azure DevOps pipelines under Pipelines/ and eight GitHub Actions workflows under .github/workflows/.

This page is an index: it covers the shared concepts and the GitHub <-> ADO mapping, then links out to a per-pipeline deep-dive for each one. Read the linked page for the triggers, inputs, stages, parameters, and usage of a specific pipeline.

Per-Pipeline Docs

PipelinePurposeDeep-dive
PR ValidationMerge gate for main - runs every Pester suite, bicep-build, arm-validate, kql-validate, and the dependency-manifest drift gatePR-Validation.md
PR Template ValidationGitHub-only check that fails a PR whose description leaves the required template sections emptyPR-Template-Validation.md
DeployMain end-to-end deploy: Bicep infra, Content Hub solutions, custom content, and Defender XDR custom detectionsDeploy.md
Deploy NightlyGitHub-only nightly E2E smoke test that provisions and tears down the throwaway Infra/test-workspace/ workspaceDeploy-Nightly.md
Drift-DetectDetect rules edited in the portal and auto-PR the drift back into the repo (report-only runs never open a PR)Drift-Detect.md
DocumenterSnapshot the live Sentinel workspace to Markdown (requires a private repository)Documenter.md
Dependency UpdateKeep dependencies.json in sync with the content tree and auto-PR any driftDependency-Update.md
DCR InventoryDeploy the DCR-watchlist sync automation account, runbook, and scheduleDCR-Inventory.md
Word ReportADO-only render of the Documenter Markdown into a styled .docx via pandoc and LibreOfficeWord-Report.md

GitHub <-> ADO Parity

Six of the seven ADO pipelines have a GitHub workflow mirror. Three workflows break the symmetry (one ADO-only, two GitHub-only), so the two sets are not a clean one-to-one mapping.

ADO pipeline (Pipelines/)GitHub workflow (.github/workflows/)
Sentinel-PR-Validation.ymlpr-validation.yml
Sentinel-Deploy.ymlsentinel-deploy.yml
Sentinel-Drift-Detect.ymlsentinel-drift-detect.yml
Sentinel-DCR-Inventory.ymlsentinel-dcr-inventory.yml
Sentinel-Dependency-Update.ymlsentinel-dependency-update.yml
Sentinel-Documenter.ymlsentinel-document.yml
Sentinel-Word-Report.yml(ADO-only, no GitHub equivalent)
(GitHub-only, no ADO equivalent)sentinel-deploy-nightly.yml
(GitHub-only, no ADO equivalent)pr-template-validation.yml

Asymmetries worth knowing:

Shared Concepts

OIDC Authentication

Both CI systems authenticate to Azure with workload identity federation (OIDC), not a stored secret. A single service principal in Entra ID carries federated credentials that trust each CI system's token issuer, so every job gets a short-lived per-run token and no client secret is stored anywhere.

  • GitHub Actions logs in through the azure-login-oidc composite action, which wraps Azure/login@v3 with the standard client/tenant/subscription parameter set.
  • Azure DevOps uses a workload-identity-federation service connection (named sc-sentinel-as-code by default). Full step-by-step: ADO OIDC Setup. GitHub-side prerequisites: PR Validation Setup.

Variables and Secrets

  • Azure DevOps reads deployment inputs from the sentinel-deployment variable group under Pipelines > Library (subscription ID, resource group, workspace name, region, and optional playbook resource group). The per-pipeline docs list the variables each one consumes.
  • GitHub Actions reads the equivalent values from repository or environment secrets and variables.

Composite Actions (GitHub)

To avoid duplicated step blocks across workflows, the GitHub side factors two shared patterns into composite actions under .github/actions/:


Authoring with GitHub Copilot

When editing files under .github/workflows/, .github/actions/, or Pipelines/, Copilot automatically loads .github/instructions/workflows.instructions.md. The path-scoped instructions cover ADO-as-source-of-truth, the composite-action adoption rule, schedule alignment, and the ADO -> GitHub Actions translation table.

Copilot tooling for pipelines:

  • Agent Sentinel-As-Code: Pipeline Engineer - owns CI/CD end-to-end. Authors and edits workflows, maintains parity between ADO and GitHub, manages composite actions, diagnoses pipeline failures, manages cron schedules.
  • Agent Sentinel-As-Code: Bicep Engineer - for the deploy-infrastructure stage and the underlying Bicep templates.
  • Agent Sentinel-As-Code: Security Reviewer - for permissions blocks, OIDC federated-credential scoping, secret references.

See GitHub Copilot setup for the full layout.