Deployment¶
This page covers deploying the RDS App to Azure App Service, the hosting platform used by King County. Complete the Getting Started guide before proceeding.
Need to provision Azure resources first?
If the Azure Resource Group, MongoDB cluster, App Service Plan, and Web App do not exist yet, see Infrastructure to provision them with Pulumi before deploying application code.
The app is a monorepo: the React frontend (client/) is built to static files, copied into the server/ folder, and served by the Express backend as a single Node.js service.
Deployment via GitHub Actions (recommended)¶
A GitHub Actions workflow automates the build-and-deploy process on every push to a designated branch. The workflow:
- Checks out the repository
- Builds the React client (
cd client && npm run build) - Copies
client/dist/intoserver/dist/ - Installs server dependencies
- Deploys the
server/folder to Azure App Service
Reference workflow files are included in the repository at .github/workflows/azure-webapp-deploy-*.yml. See CI / Workflows for details on these files and how to adapt them for a new city.
Azure Credentials Setup¶
- In the Azure Portal, navigate to the App Service and select Download publish profile.
- In the GitHub repository, navigate to Settings > Secrets and variables > Actions > New repository secret.
- Create a secret named
AZURE_PUBLISH_PROFILEand paste the contents of the downloaded publish profile XML. - In the workflow YAML, set
app-nameto the Azure App Service name.
Triggering a Deployment¶
Pushing to kc-pit-2026 triggers the production deployment. Pushing to kc-pit-2026-test triggers the test slot deployment. See CI / Workflows for the full workflow details.
Manual Deployment via VS Code¶
For testing a deployment without pushing to the main branch, the Azure App Service VS Code extension provides a manual deploy workflow.
Prerequisites¶
- Install the Azure App Service extension in VS Code.
- Sign in to an Azure account with an active subscription via the Azure tab in the sidebar.
Creating an App Service (if needed)¶
- In the Azure tab, right-click App Services and select "Create New Web App."
- Select region (e.g. "West US"), provide a name, select Node 22 LTS as the runtime, and choose a pricing tier.
Deploying¶
- Delete
server/node_modules/to reduce upload size (dependencies are reinstalled on the server). - Build the client and copy the output into the server folder:
- In the Azure tab, right-click the target App Service and select Deploy to Web App. The deployment target directory is configured in
.vscode/settings.json. - Once deployment completes, a pop-up in VS Code provides a link to the live app. The URL is also available in the Azure Portal under the App Service overview.
Environment Variables in Production¶
On Azure App Service, environment variables are set as Application settings (not in a .env file).
If the infrastructure was provisioned with Pulumi (see Infrastructure), these settings are configured automatically during pulumi up. Otherwise, set them manually:
Azure Portal > App Service > Configuration > Application settings > add each variable as a key-value pair > Save > restart the service.
See Environment Variables for the full list of required variables.