Portal Build and Deploy Pipeline

Portal Build and Deploy Pipeline A workflow diagram generated by Archify. 01 / GitHub: PR + portal-buildflow 02 / ArgoCD + Helm to Operator DC PR to master · SPA or BFF change · GitHub: PR + portal-buildflow PR to master SPA or BFF change PR Gates · lint, unit, DB gate · GitHub: PR + portal-buildflow · MySQL 8 + Redis 7 PR Gates lint, unit, DB gate MySQL 8 + Redis 7 lf-portal-base-express · portalBackend build · GitHub: PR + portal-buildflow lf-portal-base-express portalBackend build lf-portal-next · Vite build of portal/ · GitHub: PR + portal-buildflow lf-portal-next Vite build of portal/ lf-portal-full-express · to ECR: master-*/custom-* · GitHub: PR + portal-buildflow lf-portal-full-express to ECR: master-*/custom-* Custom to staging · chosen DCs + expiry · ArgoCD + Helm to Operator DC Custom to staging chosen DCs + expiry ArgoCD sync · per-DC Helm values · ArgoCD + Helm to Operator DC · lf-portal-express ArgoCD sync per-DC Helm values lf-portal-express Revert to master · on expiry; alarm if late · ArgoCD + Helm to Operator DC Revert to master on expiry; alarm if late Migrate + Roll · presync Job, then roll pods · ArgoCD + Helm to Operator DC Migrate + Roll presync Job, then roll pods presync first expiry reached restore master new master tag custom tag merge to master open PR Legend User UI Agent logic Policy Context / trace Cloud service External system

Two halves, one image

  • • lf-portal-next: built Vue SPA static files
  • • lf-portal-base-express: the Express BFF
  • • Dockerfile.portal stitches both into lf-portal-full-express

Two release flavors

  • • master builds update DCs to the latest master-<ts> tag
  • • custom-<user> builds hit chosen staging DCs, with UTC expiry
  • • Stale branches are refused until master is merged in

Guard rails

  • • Migration gate runs real MySQL and Redis on every PR
  • • ArgoCD presync Job applies Sequelize migrations before pods roll
  • • A custom image lingering on a DC raises a portal-team alarm
← Docs home