Repository navigation
Eagle Public Release Lines
eagle-public has two release lines. develop is the release line: tags vX.Y.Z, ships
to test and prod. A second line exists only for a change that cannot ship behind a flag
on develop because old and new cannot coexist in one bundle — a framework swap, a
rewrite, a redesign that replaces the shell. There is at most one next line at a time:
react, tags v3.0.0-beta.N.
Anything else, including large features, goes on develop behind a config flag
(/api/config supplies runtime flags, e.g. CONTENT_SEARCH) and ships dark. Only stand
up a next line when the change fails that test.
The Angular line has no dev deployment. Each release goes to the test site, then prod. Every workflow is a manual dispatch.
- Tag
develop:gh workflow run "Create Release Tag" --repo bcgov/eagle-public --ref develop -f version=vX.Y.Z - Deploy the tag to the test site:
gh workflow run "Deploy eagle-public to Azure staging" --repo bcgov/eagle-public --ref vX.Y.Z -f version=vX.Y.Z - Check the test site, then deploy the same tag to prod:
Rollback is the previous
gh workflow run "Deploy eagle-public to Azure production (LIVE SITE)" --repo bcgov/eagle-public --ref vX.Y.Z -f version=vX.Y.ZvX.Y.Ztag.
This is the normal path. It needs no infrastructure work.
- Branch from the next line, open a PR against it.
pr.yamlruns lint, test, and build on any base branch. - Cut a pre-release tag from the next line:
gh workflow run "Create Release Tag" --repo bcgov/eagle-public --ref react -f version=v3.0.0-beta.Nrelease.yamlchecks out the dispatched ref; its version regex accepts-beta.N. - Publish it:
gh workflow run "Deploy eagle-public to Azure staging" --repo bcgov/eagle-public --ref v3.0.0-beta.N -f version=v3.0.0-beta.N -f target=nexttarget=nextselects GitHub environmentazure-next, whose vars hold the storage accounteaglenexttestvymaysch2agand endpointeagle-public-next-test-gtaqa6dvexc6edhg.a02.azurefd.net. - Share that URL. It has no gate and no basic auth.
/apion it reaches the test rproxy (eagle-test.apps.silver.devops.gov.bc.ca) through the Front Door pass-through route, so it shows test data. - A prod fix meanwhile: fix on
develop, tagvX.Y.Z, ship. Then re-implement the fix on the next line in its own commit, and delete its entry under "Ports pending" in the next line'sTODO.md. Never fix on the next line first. - Cutover: merge the next line into
develop(conflicts resolve to the next line), tagvX.0.0, deploy withtarget=test, then prod. Rollback is the previousvX.Y.Ztag. Delete the branch. The next endpoint stays in place for the next line.
Only do this if two next lines must run at once. Avoid it. The pieces, in order:
- In eagle-edge
azure/main.bicep, add one morestatic-sitemodule (namePrefix≤ 9 lowercase letters, e.g.eaglenext) and one moresites[]entry withbackend: true— without it,/api/*on that endpoint hits storage and the SPA rewrite answersindex.htmlwith HTTP 200. Gate it with a bool param set inmain.test.bicepparam, the waydeployNextSiteis gated. Pushmain;Deploy edgedeploys test. ReadedgeEndpointHostNamesand the storage account name from the deployment outputs (az deployment group list -g c4b0a8-test-rg). The endpoint hash is assigned at deploy time and cannot be composed ahead of it. - Add a federated credential on the existing identity:
The Bicep grants that identity uploader roles on the new storage account.
az identity federated-credential create -g c4b0a8-test-rg --identity-name eagle-public-cicd-test \ -n gh-env-<env> --issuer https://token.actions.githubusercontent.com \ --subject repo:bcgov/eagle-public:environment:<env> --audiences api://AzureADTokenExchange
- Create GitHub environment
<env>on bcgov/eagle-public: deployment branch policy tagsv*; varsAZURE_STORAGE_ACCOUNT,AZURE_FRONTDOOR_ENDPOINT,AZURE_SUBSCRIPTION_ID; secretsAZURE_CLIENT_ID,AZURE_TENANT_ID(same values asazure-test). - In
deploy-azure-staging.yaml, add the option to thetargetinput and map it in theenvironment:expression. - First deploy: a new Front Door route serves the platform "Page not found" page (266 KB
body, on every path) for up to about 30 minutes while
/api/configon the same endpoint already answers. Wait for/to return 200, then rerun the deploy so the smoke test passes.
Eagle Documentation
Operations
- Deployment Pipeline
- Helm Charts
- Reverse Proxy
- Rollback Procedures
- Eagle Public Release Lines
- Eagle Search Archive
- Azure Migration Strategy
- Azure Hosting
- Front Door Per-App Split
- Front Door Ban Ladder
- Error Logging
- Secrets Management
Architecture
- Architecture Overview
- API Architecture
- Analytics Architecture
- Angular Patterns
- Eagle Public Page Layout
- Eagle Public Adding A Page
- Extended Project Pages
- ENGAGE–EAGLE Integration
- BCGW Project Export
- Eagle Search
- Document Content Search
- Eagle DEMI
- Eagle DEMI Push Sweep
- Eagle DEMI Re-Push and Backfill
- Eagle Notify
- Project Data Models
- Async Jobs API
- Bulk Document Download
Configuration
Help
Repositories
Environments