Skip to main content

v2.77.1

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

This release fixes four problems that appear when a lane runs several jobs at once on one runner. Plans without lanes, and lanes of one job, were not affected by the last three.

A re-run job's success is seen​

gh run rerun --failed resumes one execution: orun run --lane … --retry re-opens the lane's failed jobs. A job re-opened that way and then passed was still read as failed, so a lane in a later environment waiting on it kept waiting until its 60-minute limit. orun now reads the re-open (state.job.retried) the way the platform does.

A completed job is not "taken over"​

A job's heartbeat kept running after the job reported its result, while it ran post-steps and printed its output. The platform answers every heartbeat for a finished job with lease_lost, and orun printed ↻ lease lost on <job> — another runner has taken it over and cancelled the job's remaining work. The heartbeat now stops when the job reports its result.

Tool installers no longer race​

Jobs on one runner share the tool cache. Two actions/setup-node steps installing the same Node version at once could leave one job with a half-written install (ENOENT … bin/npm) or running a node binary still being written (text file busy). Actions whose name says setup (actions/setup-node, pnpm/action-setup, hashicorp/setup-terraform, …) now run one at a time per tool cache; the second finds the first's install and reuses it.

A failed job's log is printed​

With several jobs in flight, a lane prints each job's step groups when the job ends. A job that failed a step printed nothing of its own, its failing step included. It now prints its steps, the error annotation and its footer.