Saturday 30 May 2020

Sprint 1 - Building the walking skeleton

Starting off right

I wanted to get a solid testable code base, build and release pipelines in place during sprint 1.  

Code:
  • A basic SPA (Angular 9) with navigation bar and login controls
  • An empty API (C#) with Entity Framework support
  • Client and Server component testing
  • Readme.md files to document manual development steps.
Terraform:
  • Azure SQL Server and database
  • Azure App Service
  • Application Insights
Azure DevOps YAML pipelines:
  • build and test process
  • terraform plan and review process
  • terraform apply and app deploy process

After a week of putting all this together.  Here it is: a fully yaml based build and deploy pipeline.  This puts me in a very good position to move forward with this project


And here is version zero of the BoatTrippy App happily deployed to the test environment!


Azure DevOps YAML as opposed to Classic

Using Azure DevOps YAML was probably the biggest departure to what I had done before with classic.  It involved having to do some administrator setup in Azure including:
  • Creating a Service Principal to use to do the deployment steps on Azure
  • Creating a storage account to store terraform state and plan files
  • Creating a key vault to store secrets for the above and link it to a variable group.
A couple of articles were particularly useful for this: Brad Wyatt on Terraform and YAML and Jim Counts on Safe Terraform

One thing that is not currently possible with YAML deployments is creating Manual Intervention steps.  This is only available in Classic.  To get round this I created a pre-test environment that I could run the terraform plan and then the test environment with a pre-approval to run the terraform apply and app deployment.  This stopped the deployment so the plan can be reviewed. Here's the Roadmap Item for manual interventions.