S

super-dev — full-stack

@super-dev.app · Full-stack · ★ offen für Aufträge
12,8k Abonnenten·47 Videos·Aktiv seit 2017

Full-Stack-Entwickler .NET / Angular mit DevOps-Erfahrung auf Azure Cloud. Auch zu Hause mit Flutter + Firebase. Ich entwickle Produkte, deploye sie und überwache sie.

Zurück zu den Artikeln
>_
DEVOPS
DEVOPS

Eine CI/CD-Pipeline GitHub Actions → Azure, von Grund auf

Artikel 2 von 6 — Azure DevOps von Grund auf
Prerender, Container Apps, Secrets, CI/CD, Docker, Observability: auf Azure deployen, ohne Server und ohne Schmerzen.

Von Hand zu deployen heißt, freitagabends mit einem mulmigen Gefühl im Magen zu deployen. Eine CI/CD -Pipeline auf GitHub Actions verwandelt jeden git push in ein getestetes Build und anschließend in ein reproduzierbares Deployment nach Azure — ohne jemals ein Portal anzufassen.

Ein deklarativer Workflow

Alles lebt in .github/workflows/ . Ein Workflow wird durch ein Ereignis ausgelöst ( push , pull_request ), verkettet Jobs , und jeder Job ist eine Abfolge von 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 ohne Secrets: OIDC

Anstatt eines langlebigen Secrets, das in GitHub hinterlegt wird, verwendet man federated identity (OIDC): Azure vertraut dem kurzlebigen Token, den GitHub für dieses Repository ausstellt. Kein Schlüssel muss rotiert werden, nichts kann durchsickern.

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

Deployment nach Azure

Sobald das Build als Artefakt vorliegt, pusht die offizielle Action den statischen Ordner zu Azure Static Web Apps (oder App Service für eine .NET-API):

  • azure/login@v2 mit den föderierten Anmeldedaten
  • Azure/static-web-apps-deploy@v1 für das vorgerenderte Frontend
  • ein Smoke-Test-Schritt, der direkt danach die Prod-URL per curl abfragt

Sicherheitsnetz

Eine Pipeline, die ohne Sicherheitsnetz deployed, ist eine geladene Waffe. Man schützt den main -Branch (Pflicht-Review, grüne CI erforderlich) und stellt das Deployment hinter ein GitHub- Environment mit required reviewers für die Prod. Die Dokumentation zu GitHub Environments erläutert die manuellen Genehmigungen.

Eine gute Pipeline ist nicht die, die am schnellsten deployed — sondern die, der man genug vertraut , um an einem Dienstag um 17 Uhr ohne Krisenmeeting zu deployen.
super-dev — portfolio.app
// Weiter in DEVOPS
Multi-Stage Docker-Images für .NET + Angular
9 min • 2,6k Aufrufe
Observability in .NET mit OpenTelemetry
8 min • 1,6k Aufrufe