Skip to main content

Three versions, one deploy

Every Fjall deploy involves three independently versioned pieces: Your application pins its constructs version, but the CLI that runs the deploy is chosen separately — on your machine or in CI. If the engine is older than the constructs that synthesised your infrastructure, the deploy can go wrong silently: services dropped from the build set, images built without the options your runtime needs, or permissions that no longer line up. Fjall closes this gap with an engine-compatibility check. At synthesis, your constructs stamp the minimum engine version they require into the deployment artefact. Before building, pushing, or touching CloudFormation, the engine reads that constraint and refuses loudly if it cannot honour it — for application deploys and organisation-level deploys and destroys alike. A refusal always happens before anything in AWS is changed.
Newer engines deploying older applications are always supported. Upgrading fjall never locks you out of redeploying an app synthesised by an earlier version. The check only bites in the unsafe direction: an old engine driving newer infrastructure code.

The refusal messages and their cures

Applications created before Fjall 4.3 carry no constraint; they deploy exactly as before.

Upgrading from 5.x to 6

When your application moves to @fjall/components-infrastructure 6.x, upgrade the engine everywhere a deploy runs:
The same-major rule is all you need to remember: engine major = constructs major. A 6.x engine deploys every 6.x app (and any older app). The same steps apply to any earlier major move (4.x to 5, and so on).

Emergency override

If you have verified an engine/constructs pairing yourself and need to push a deploy through anyway, set:
This downgrades the refusal to a warning for that run and is audit-logged. Treat it as an emergency escape hatch, not a workflow: deploying across an engine skew can make silently wrong infrastructure changes — exactly the failure the check exists to stop. There is no CLI flag for this; the environment variable is the only override, and it works identically in local runs and both CI plugins.

Next steps

CI/CD Integration

Pin or auto-derive the engine version in your pipelines

CLI Installation

Install or upgrade the fjall CLI