Skip to content

exit code 141 for PRs with many commits due to pipefail #10

Open
@tommyknows

Description

@tommyknows

Orb version: 1.0.0

What happened:

When opening a PR with many commits (~400, in my case, due to importing another repo), the orb fails more or less silently with an exit code 141.
The underlying reason for this is that CircleCI runs /bin/bash -eo pipefail as the default shell, with which the lint script is being invoked.

Then, this command fails because it's using head, which closes the (reading end of) the pipe before git cherry returned all the data, which makes the whole pipeline fail.

This only happens for PRs with many commits, as otherwise git cherry returns before head closes the pipe.

There's a couple of different options to mitigate the issue:

  • The orb could specify the shell parameter in it's run block and set it to something like /bin/bash only. This will turn off pipefail globally.
  • The script itself could turn off pipefail with a set +o pipefail anywhere within the script, potentially even right before the offending line, and potentially also turn it on again directly afterwards with a set -o pipefail
  • The script could use a different command than head, one that doesn't close the pipe before all data is read. For example, sed could be used.

I'm happy to open a PR for any of these, but wanted to inquire as to if there's any preference for the solution!

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions