My own Azure resume, following ACG project video. Created on my Windows 11 MinisForum EliteMini HX90 pc, using Visual Studio Code. Extended version of the project created by Drew Davis with IaC to deploy all Azure resources.
- Visual Studio Code
- Azure Functions Core Tools
- Visual Studio Code Extension: Azure Functions
- dotnet core 3.1 **Make sure to get 3.1 version, else there will be newtonsoft errors later on in the counter.cs and getresumecounter.cs
- NuGet Microsoft.Azure.WebJobs.Extensions.CosmosDB
- Visual Studio Code Extension: Azure Storage
- Create Azure Application Registration
az login
az account set --name subName
az ad sp create-for-rbac --name <somethingThatMakesSenseToYou> --role contributor --scopes /subscriptions/<yourSubscriptionId> --sdk-auth
-
Create a gitHub reposity secret named AZURE_RESUME_GITHUB_SP and input json value from above az command
-
Modify the environment variables in ./.github/workflows/develop-full-stack.yml and ./.github/workflows/prod-full-stack.yml to suit your needs
- I use godaddy for dns and have delegated to a dns zone in a central resource within the resource group listed in the rgDNS env variable listed below. The bicep will fail if you don't do something similar.
env:
dnsZone: 'ryanmcvey.me'
stackVersion: 'v1'
stackEnvironment: 'prod'
stackLocation: 'eastus'
stackLocationCode: 'us1'
AppName: 'resume'
AppBackendName: 'resumecounter'
tagCostCenter: 'a1b2c3'
rgDns: 'glbl-ryanmcveyme-v1-rg'
-
after the stack deploys, need to retrieve a few values and commit for new release to configure the app
- ./frontend/main.js , need to input the applicable functionApiUrl
- ./frontend/js/azure_app_insights.js , need to input applicable connection string
- via azure portal in the backend resource group, connect to cosmos db Data Explorer and create the db/container/item value
"id": "1",
"count": 0
-
once the github action runs again, the full stack is complete and you should be able to access your functioning app at something like https://resume.ryanmcvey.me
-
TODO , need to find a way to automate the injection of the manual steps above