Starting a new component
When you create a new component (application, data store, or shared infrastructure), follow this workflow in order, from an empty repository through to a working deployment in a non-production environment.
Before you start
Make sure you have the required access and local setup in place before you begin the numbered flow below:
- GitHub repo access and team ownership for the product or component, as described in Create a GitHub Repository
- Jenkins access and the repository topic needed for the organisation scan, as described in Jenkins setup
- Azure access, VPN access, and the relevant developer tools listed in Onboarding
- The repo for any shared infrastructure or central configuration that your component depends on
- A clear target environment for the first deployment, usually preview or AAT
Step 1: Create a new GitHub repository
Create a new GitHub repository.
After completing runtime-specific setup, return to this page and continue with the common steps below.
If you are creating infrastructure-only components, create the repository, skip the runtime-specific setup, and continue with Step 2: Set up Jenkins.
Runtime-specific guidance:
Step 2: Set up Jenkins, including deployment controls
Add the repository to Jenkins, including the GitHub topic that gets it picked up by the organisation scan and the CMP deployment-controls.yml entry that turns on build and deploy stages.
Step 3: Configure GitOps with Flux
We use Flux to deploy applications to AKS. Follow this guidance to configure GitOps with Flux and deploy your app.
Step 4: Set up infrastructure
If your component needs infrastructure such as databases or storage accounts, add infrastructure as code.
Step 5: Set up secrets management
If your component needs secrets, set up secrets management.
Step 6: Configure TLS certificates
If your component is exposed publicly, configure TLS certificates.
Step 7: Configure Public DNS
Step 8: Configure load balancer
Configure load balancer for backend services.
Step 9: Configure Front Door
Configure Front Door for frontend services.
Step 10: Deploy to a non-production environment and validate
Deploy and validate your first build before moving on to Path to Live for production readiness (environment approvals, OAT, shuttering and health probes).
Optional components
Not every component needs these — add them if your component needs the capability:
- Python services — if your runtime is Python rather than Java or Node.js
- Elasticsearch — if your component needs a search index
- Feature flags — to decouple deployment from release
Supporting guidance
- Common pipeline overview
- Helm charts
- Publishing libraries — for publishing a shared library rather than deploying a service