Web App Automation with Microsoft Azure
A CRUD web app deployed to Azure App Service through a GitHub Actions pipeline on Cosmos DB's MongoDB API, provisioned through the portal on purpose so the resource model stays visible rather than abstracted.
The pair to the GCP build, and provisioned entirely through the Azure Portal rather than the CLI or infrastructure-as-code, on purpose: clicking through it once is what makes the resource model visible instead of abstracted. A Resource Group first, then an App Service paired with a Cosmos DB account (MongoDB API) via Azure's combined "Web App + Database" flow.
Basic Authentication is enabled on the App Service and its publish profile downloaded so GitHub Actions can authenticate for deployment, with the Cosmos DB connection string set as an environment variable on both the App Service and the repository. The deploy.yml workflow builds the Next.js app, packages it with only its production dependencies, and deploys it via azure/webapps-deploy@v3 on every push to main.
Verification goes through the live app rather than the pipeline: a record created in the deployed application, then confirmed in Cosmos DB's Data Explorer. A green pipeline says the deploy ran, not that the thing works. Doing the same deploy-on-merge outcome across two different provider models is also what makes the shape underneath legible, build an artifact, authenticate as a scoped identity, deploy on merge, verify against the live service.
- Deployed a Next.js/Node.js CRUD app to Azure App Service via GitHub Actions
- Connected Cosmos DB's MongoDB API as the production database
- Authenticated GitHub Actions deployment using Basic Auth and a downloaded publish profile, not a stored password
- Verified the pipeline end-to-end by creating a record through the live app and confirming it in Cosmos DB's Data Explorer