We recently hit a Bad substitution error in the publish workflow because a run: step used bash-only syntax (${VAR::7}) but the CI container's default shell is sh.
actionlint is a static checker for GitHub Actions workflows that integrates shellcheck to lint run: blocks — it would have caught this. Investigate adding it to CI (either as a separate workflow or a step in the existing one).
We recently hit a
Bad substitutionerror in the publish workflow because arun:step used bash-only syntax (${VAR::7}) but the CI container's default shell issh.actionlint is a static checker for GitHub Actions workflows that integrates shellcheck to lint
run:blocks — it would have caught this. Investigate adding it to CI (either as a separate workflow or a step in the existing one).