Skip to main content

Environments

Five environments make up the Fastlane deployment topology. develop owns the governed promotion lane through all five environments, while the release lane allows release/* branches to target only the lower environments (dev, qa, uat).

Environment Matrix

EnvironmentOwnerTriggerApproval Required
Devdevelop or release laneAutomatic on develop, manual on release laneNone
QAdevelop or release laneManualQA lead / team
UATdevelop or release laneManualQA lead / team
Stagingdevelop onlyManualPM / tech lead
Productiondevelop or mainManualTech lead + PM

Heroku App Mapping

Dev

AppHeroku AppURL
fastlane-portaldev-fastlane-portalhttps://dev-fastlane-portal.goosehead.com
fastlane-admindev-fastlane-adminhttps://dev-fastlane-admin.goosehead.com
fastlane-api-gatewaydev-fastlane-api-gatewayhttps://dev-fastlane-api-gateway.goosehead.com
docsdev-fastlane-docshttps://dev-fastlane-docs.goosehead.com
componentsdev-fastlane-storybookhttps://dev-fastlane-storybook.goosehead.com

QA

AppHeroku AppURL
fastlane-portaltest-fastlane-portalhttps://test-fastlane-portal.goosehead.com
fastlane-admintest-fastlane-adminhttps://test-fastlane-admin.goosehead.com
fastlane-api-gatewaytest-fastlane-api-gatewayhttps://test-fastlane-api-gateway.goosehead.com

UAT

AppHeroku AppURL
fastlane-portaluat-fastlane-portalhttps://uat-fastlane-portal.goosehead.com
fastlane-adminuat-fastlane-adminhttps://uat-fastlane-admin.goosehead.com
fastlane-api-gatewayuat-fastlane-api-gatewayhttps://uat-fastlane-api-gateway.goosehead.com

Staging

AppHeroku AppURL
fastlane-portalpreprod-fastlane-portalhttps://preprod-fastlane-portal.goosehead.com
fastlane-adminpreprod-fastlane-adminhttps://preprod-fastlane-admin.goosehead.com
fastlane-api-gatewaypreprod-fastlane-api-gatewayhttps://preprod-fastlane-api-gateway.goosehead.com

Production

AppHeroku AppURL
fastlane-portalprod-fastlane-portalhttps://prod-fastlane-portal.goosehead.com
fastlane-adminprod-fastlane-adminhttps://prod-fastlane-admin.goosehead.com
fastlane-api-gatewayprod-fastlane-api-gatewayhttps://prod-fastlane-api-gateway.goosehead.com

Docs and Storybook are only deployed to dev. QA, UAT, staging, and production deploy the 3 core apps.

DOTENV_KEY Configuration

Environment variables are encrypted in .env.vault and decrypted at build/runtime using environment-specific DOTENV_KEY values.

EnvironmentCI VariableUsed By
DevDOTENV_KEY_DEVELOPMENTFrontend build args + API runtime
QADOTENV_KEY_TESTFrontend build args + API runtime
UATDOTENV_KEY_UATFrontend build args + API runtime
StagingDOTENV_KEY_PREPRODFrontend build args + API runtime
ProductionDOTENV_KEY_PRODFrontend build args + API runtime

Frontend apps receive DOTENV_KEY as a Docker build argument to inject VITE_* variables at build time. The API gateway loads .env.vault at runtime via dotenv/config.

E2E Test URLs

VariableDevQAUAT
DA_BASE_URLhttps://dev.quote.goosehead.comhttps://qa.quote.goosehead.comhttps://uat.quote.goosehead.com
BASE_URLhttps://dev-fastlane-portal.goosehead.comhttps://test-fastlane-portal.goosehead.comhttps://uat-fastlane-portal.goosehead.com
TEST_REPORTS_API_URLhttps://dev-fastlane-api-gateway.goosehead.com/api/v1/test-reports/playwrighthttps://test-fastlane-api-gateway.goosehead.com/api/v1/test-reports/playwrighthttps://uat-fastlane-api-gateway.goosehead.com/api/v1/test-reports/playwright

Required GitLab CI/CD Variables

These must be configured in GitLab > Settings > CI/CD > Variables:

VariableTypePurpose
HEROKU_PRODUCTION_KEYProtectedHeroku API key for Docker push, release, migrations, and seed dynos
DOTENV_MEProtecteddotenv.org service credential for the build-vault CI job (auto-rebuilds .env.vault before deploys)
DOTENV_KEY_DEVELOPMENTProtecteddotenv-vault decryption key for dev
DOTENV_KEY_TESTProtecteddotenv-vault decryption key for QA
DOTENV_KEY_UATProtecteddotenv-vault decryption key for UAT
DOTENV_KEY_PREPRODProtecteddotenv-vault decryption key for staging
DOTENV_KEY_PRODProtecteddotenv-vault decryption key for production
GL_PROJECT_TOKENProtectedGitLab Project Access Token (api + write_repository) for MR notes, sync-to-main, backport
CLAUDE_API_KEYProtectedAnthropic API key for AI code reviews
TEAMS_WEBHOOK_URLOptionalMicrosoft Teams webhook for deployment notifications
TEST_AUTH_API_KEYProtectedAPI key for uploading Playwright test results

Cache Strategy

The pipeline uses a pnpm store cache to speed up pnpm install:

  • Cache key: pnpm-lock.yaml file hash
  • Cache path: .pnpm-store/
  • Default policy: pull (read-only for most jobs)
  • Cache warmup: Runs on main and develop with pull-push policy to refresh the cache

All jobs extend .node-setup which configures pnpm to use the cached store directory.

Protected Environments

Protected environments are configured in GitLab > Settings > CI/CD > Protected Environments:

EnvironmentRequired Approvers
qaQA lead / team
uatQA lead / team
stagingPM / tech lead
productionTech lead + PM

When a manual deploy job is triggered, GitLab will require the configured approvers to approve before the job executes.