v2.90.0
Binaries and the merged-pull-request list are on the GitHub releases page.
A build can stop after its scaffold stage
orun.work, the app builder on Orunbase, builds an app from a baseline in two stages. The scaffold stage needs GitHub only: the code placed and branded, a repository created, the first pull request landed. The live stage needs the baseline's providers: credentials reconciled, deployed, probed. An account with no Cloudflare connection gets a code-only app by stopping after scaffold, and a later build runs the live stage (orun-cloud saas-orun-work WA5).
The bootstrap door tells the runner where to stop with one of two variables. Before this release the bootstrap driver ignored both, so a scaffold-only request ran the whole build. From this release:
orun agent serve --driver bootstrapreadsORUN_BASELINE_UNTILandORUN_BASELINE_PHASE.ORUN_BASELINE_UNTIL=<phase>adds--until <phase>andORUN_BASELINE_PHASE=<phase>adds--phase <phase>, beside the--run-hooks --resumethe driver always passes. When both are set the driver refuses to launch and names both. When neither is set the command is byte for byte what it was.--resumecomposes with--untiland--phase. It used to be refused beside either, which would have failed every stopped build.--resumenow places the phases not already in place within the window the other flag names, so a runner restarted mid-stage resumes like a full build. A resumed run reports a phase past its stop asnot part of this run, notalready in place. A--redooutside the window is refused.--phasewith--untilis still refused.- A stopped build ends like any other. It emits the run-level
doneevent, exits0, and the driver reportscompleted.
Late-bound inputs
A build document input can be declared lateBound: true. The value comes
from a later stage, such as the workers.dev subdomain of a Cloudflare account
the app has not connected yet. Its default is the placeholder the scaffold
stage writes:
inputs:
subdomain:
type: string
default: your-workers-subdomain
lateBound: true
The live stage must replace the placeholder and may never keep it:
- A run that
--untilstops before the build's last phase may leave the input unset, and places the placeholder. - Every other run must be given a value: a full build,
--resumewithout a stop,--phase, and--untilthe last phase. Without one the run is refused before anything is placed, exit1, naming the input and its placeholder.--phasecounts because the platform runs the live stage on its own that way, and orun cannot tell a scaffold phase from a live one. - A resumed run takes a given value over the recorded one. Every other input
is still refused when it disagrees with
.orun/provenance.lock. The lock then records the new value. A recorded placeholder is not recovered as though it were a value, so a live run that forgot the value is refused instead of deploying the placeholder.
A late-bound input needs a default and at least two phases, and cannot also
be secret. Each of these is a parse error.
A build that stops skips the readiness gate
orun baseline new --local refused the whole build when any provider the
baseline requires was not connected. That refused every code-only app. The
registry reports a full build's readiness and carries no stages, so it cannot
say which providers the phases up to the stop use.
From this release, --until <phase> skips the gate:
- on the platform, the bootstrap door has already checked readiness for the phases that will run;
- by hand,
--untilis the operator's choice, and each phase still checks the providers it needs when it starts (requires.probe).
The command still prints which providers are not connected. Without
--until, including with --phase, the gate is unchanged. --via-platform
is unchanged too: it does not forward --until or --phase.
What to do
- Nothing, for a build that does not stop: its command, its gate and its inputs are as they were.
- A baseline offered to orun.work declares its stages on its card and marks
inputs only the live stage can have as
lateBound: truein its build document. orun does not re-place files the scaffold stage already placed, so the live stage replaces the placeholder wherever the scaffold wrote it, in its own modules or hooks. - Orunbase must run this release on its bootstrap runner before the apps plane asks for a stop. A driver older than v2.90.0 ignores both variables and runs the whole build.