Skip to content

ci: build-runner-binary searches /tmp for libboxlite.a and fails on permission errors #1133

Description

@DorianZheng

deploy-infra.yml cannot complete: Build commit Runner / Build Runner (linux-amd64)
fails at Extract commit libboxlite.a, right after the C SDK artifact downloads
successfully.

Measured on run
30789214479 (ref
2888df0a, the first run able to start after #1129):

Artifact download completed successfully.        ← c-sdk-linux-x64-gnu, digest matched
...
find: '/tmp/snap-private-tmp': Permission denied
find: '/tmp/systemd-private-…-ModemManager.service-tIrfWw': Permission denied
##[error]Process completed with exit code 1.

deploy was skipped, so no dev deploy can complete.

Cause

.github/workflows/build-runner-binary.yml:148 (at 2888df0a):

library=$(find /tmp -path '*/lib/libboxlite.a' -print -quit)

Scanning all of /tmp walks root-owned sibling directories the runner user cannot
read. GNU find's -quit exits zero only if no errors have occurred, so the
permission errors put a non-zero status on the assignment even when the library was
found, and set -euo pipefail kills the step with the file sitting on disk.

The release branch of the same step, 17 lines up, does not search — it computes the
path from the archive name (:131). build-c.yml:207,220 packages exactly one
top-level directory named after the archive, so the derived path is always available.

Why it was never caught

libboxlite_source: artifact has exactly one caller — deploy-infra.yml — and that
workflow could not start at all until #1129 merged. The release arm, which every
other caller uses, was unaffected.

actionlint does not flag it. No test covered this step.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions