Skip to main content

v2.83.0

Binaries and the merged-pull-request list are on the GitHub releases page.

A step reaches Orunbase while it runs​

Until this release a remote run sent a step's log once, whole, when the step ended. Orunbase drew a running step as not started and its log as empty until it finished; a ten-minute test step was ten minutes of nothing (orun-cloud saas-live-runs LR8). Now each step reaches the log three ways:

  • As it starts. The step's === <step> === banner goes out with the step's start event, so the step reads running as soon as the pipeline uploads it.
  • While it runs. The executors (local, docker and the GitHub Actions engine) hand the step's output to the log as it arrives, and it is sent every 2 seconds, or as soon as 64 KiB of it waits. In the GitHub Actions engine it passes through the same workflow-command handling as the recorded output, so ::add-mask::, ::set-output:: and ::group:: lines read the same live as they do afterwards. Every piece is masked with the run's secret redactor before it leaves the runner, and pieces are cut only where no secret spans the cut, so a value is never sent in two halves that neither mask would match.
  • When it ends. The part of the step's recorded output the stream did not send goes out with the step's end event and its outcome — also for a step that printed nothing, which no longer reads running until its job ends. When the stream and the recorded output disagree (a retried step), the recorded output follows a marker line rather than being silently cut.

A finished job's log is whole​

A job now waits, up to 15 seconds, for its queued log to land before it reports :complete: Orunbase seals a finished job's log and a reader stops tailing it, so a chunk that landed after the result was a chunk nobody saw. An upload that fails is retried on a timer (the backoff, or a server's Retry-After), instead of waiting for the job's next chunk or the run's end.

Compatibility​

  • The wire is the one Orunbase already reads (start, chunk and end step events on a log append, saas-step-logs); an older server stores the chunks and ignores what it does not know.
  • orun logs and any raw reader still split a job's log on the step banners. A step that printed nothing now has its banner in the log.
  • Local runs, the sealed execution record and --verbose output are unchanged.