S

super-dev — full-stack

@super-dev.app · Full-stack · ★ open to work
12.8k subscribers·47 videos·Active since 2017

Full-stack .NET / Angular dev with a DevOps streak on Azure Cloud. Also fluent in Flutter + Firebase. I build products, ship them, and keep them healthy.

Back to articles
>_
DEVOPS
DEVOPS

A GitHub Actions → Azure CI/CD pipeline, from scratch

Article 2 of 6 — Azure DevOps from scratch
Prerender, Container Apps, secrets, CI/CD, Docker, observability: ship to Azure without a server or the pain.

Deploying by hand means deploying on a Friday night with a knot in your stomach. A CI/CD pipeline on GitHub Actions turns every git push into a tested build, then a reproducible deployment to Azure — without ever touching a portal.

A declarative workflow

Everything lives in .github/workflows/ . A workflow triggers on an event ( push , pull_request ), chains jobs , and each job is a sequence of steps :

YAML
1name: deploy
2on:
3 push:
4 branches: [main]
5jobs:
6 build:
7 runs-on: ubuntu-latest
8 steps:
9 - uses: actions/checkout@v4
10 - uses: actions/setup-node@v4
11 with:
12 node-version: 22
13 - run: npm ci
14 - run: npm test
15 - run: npm run build:ssg

Secrets without secrets: OIDC

Rather than a long-lived secret copied into GitHub, use federated identity (OIDC): Azure trusts the short-lived token GitHub mints for this repository. No key to rotate, nothing to leak.

YAML
1permissions:
2 id-token: write
3 contents: read

Deploying to Azure

Once the build is artifacted, the official action pushes the static folder to Azure Static Web Apps (or App Service for a .NET API):

  • azure/login@v2 with the federated credentials
  • Azure/static-web-apps-deploy@v1 for the prerendered front end
  • a smoke-test step that curl s the production URL right after

Guardrails

A pipeline that deploys without a net is a loaded gun. Protect the main branch (required review, green CI required) and put the deployment behind a GitHub Environment with required reviewers for production. GitHub's environments docs cover manual approvals.

A good pipeline isn't the one that ships fastest — it's the one you trust enough to deploy on a Tuesday at 5 p.m. without an emergency meeting.
super-dev — portfolio.app
// More in DEVOPS
Multi-stage Docker images for .NET + Angular
9 min • 2.6k reads
.NET observability with OpenTelemetry
8 min • 1.6k reads