> git clone email@example.com:projectkudu/AzureFunctionsPortal.git > cd AzureFunctionsPortal > nuget restore > msbuild AzureFunctions.sln > npm install -g angular-cli > cd AzureFunctions.AngularClient > npm install > ng build --watch
Needed environment variables You'll need to create an AAD web application and set
https://localhost:44300as a reply URI, then configure the following environment variable.
AADClientId = <GUID> AADClientSecret = <string> aiInstrumentationKey = <GUID> (optional to track AppInsights events)
Create a new IIS site from
44300that points to
..\\AzureFunctionsPortal\\AzureFunctionsfor root path.
defaultfolder in there. Ensure the casing is correct for the new folders.
iisresetfrom an elevated cmd.
https://localhost:44300(note that logins only work with accounts in your AAD tenant used above)
Optional: You can run
ng build --watchin
..\\AzureFunctionsPortal\\AzureFunctions.AngularClientto launch ng builder in watch mode.
Code and branches
This is connected to staging. After all scenarios are validated on staging we swap by running tools\SwapWithStagingSlots.ps1
This is the next environment. This is never swapped, instead changes from dev get merged into master.
# make sure you're working on the dev branch > git checkout dev # create your own personal branch based on dev > git checkout -b ahmels-work # make all your changes in your branch # commit and push these changes to github > git push origin ahmels-work -u # open a pull request. # once everything is good, merge, rebase and push > git checkout dev > git merge ahmels-work > git pull --rebase # fix any conflicts > git push origin dev
Framework: ASP.NET WebAPI
The API surface is very limited:
# used while in Azure Portal api/templates api/bindingconfig # Used before user gets to Azure Portal api/tenants api/switchtenants api/token # health pings by traffic manager and monitoring api/health
This is a bit of a complicated subject:
For external sites (i.e: https://functions.azure.com, https://functions-staging.azure.com, https://functions-next.azure.com) authentication is done on the frontEnd and we get the token passed to us. Logic to handle that is in \Authentication\FrontEndAuthProvider.cs
For local development (i.e: https://localhost:44300) authentication is handled by the app itself, code in \Authentication\LocalhostAuthProvider.cs
When in Azure Portal authentication is always handled by Azure Portal itself and we just get the token.
Check out https://angular.io