cad-cicd-pipeline

Builds a GitHub Actions CI/CD pipeline deploying .NET apps to Azure with OIDC authentication.

2|Updated Jun 1, 2026
One-click install
npx skills add https://github.com/jay-steenbergen/MSSAMentorAgent --skill cad-cicd-pipeline-jay-steenbergen
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: cad-cicd-pipeline
Source: https://github.com/jay-steenbergen/MSSAMentorAgent/tree/main/.github/skills/tracks/cloud-app-dev/cad-cicd-pipeline
Command: npx skills add https://github.com/jay-steenbergen/MSSAMentorAgent --skill cad-cicd-pipeline-jay-steenbergen

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Learners finishing Azure app projects often have working code but no automated way to build, test, and deploy it safely. This Skill guides them through creating a complete GitHub Actions pipeline that deploys an App Service API and a Function App using OIDC federated credentials instead of long-lived secrets. ## Core Features & Use Cases - OIDC Federated Credentials: Configures an Entra ID app registration with separate federated credentials for the main branch and pull requests, eliminating stored client secrets. - Multi-Job Workflow: Builds a workflow with build/test, gated deploy-api, deploy-worker, and smoke-test jobs wired together with needs: dependency graphs. - Production Gating: Uses a GitHub Environment with required reviewers so production deploys need manual approval, plus a smoke test that fails the run if /health breaks. - Use Case: A learner who completed projects deploying a TodoApi to App Service and a Worker to a Function App pushes to main and watches the pipeline build, test, await approval, deploy both apps in parallel, and verify the live endpoint. ## Quick Start Ask the mentor to walk you through building a GitHub Actions CI/CD pipeline that deploys your TodoApi and Worker to Azure using OIDC federated credentials.

Frequently Asked Questions about cad-cicd-pipeline

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I set up GitHub Actions OIDC authentication with Azure?

Create an Entra ID app registration, add a federated credential with the subject repo:owner/repo:ref:refs/heads/main, assign the Contributor role on the resource group, and store the client, tenant, and subscription IDs as GitHub Actions variables. The azure/login action then exchanges a short-lived JWT for an Azure token with no stored secret.

How do I gate production deployments behind manual approval in GitHub Actions?

Create a GitHub Environment named production in repo Settings, add a required reviewer, then reference it with the environment: key on the deploy job. The job enters a Waiting for review state until someone clicks Approve and deploy.

Why does azure/login fail with AADSTS70021 in GitHub Actions?

AADSTS70021 means the federated credential subject does not match what GitHub sent. Compare the subject in the error log character-by-character against your credential, since the format repo:owner/repo:ref:refs/heads/main is case-sensitive and typos in the owner or repo name are the most common cause.

Why does WebApplicationFactory fail with Program is inaccessible in .NET 8 tests?

Top-level statements in .NET 8 emit an internal Program class that test projects cannot reach. Add the line public partial class Program { } at the bottom of Program.cs to make it visible to WebApplicationFactory<Program> across project boundaries.

Does this pipeline work with Azure DevOps Pipelines instead of GitHub Actions?

No, this project is scoped to GitHub Actions only and requires the code to live in a GitHub repository. Azure DevOps Pipelines uses the same concepts with a different YAML dialect, but that comparison is explicitly out of scope.