-
-
Notifications
You must be signed in to change notification settings - Fork 86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
False-negative on GitHub Actions #106
Comments
Hey @ai :) Do you have an example I could take a look at? Chalk behaves differently based on how it's used (e.g. with pipes). Can't confirm if this is a bug or not without seeing if there's another issue. |
Sure, here is an example with I have Node.js script with simple code like:
When I run this script in CI with: - name: Deploy files
run: ./script.js I have no colors and I start to have colors only with: - name: Deploy files
run: ./script.js
env:
FORCE_COLOR: 2 |
Which version of chalk? Can you verify you're at chalk >= 3.0? |
I checked that I have Maybe some other check disable it? |
Very strange. Could you see if |
|
That's why. For whatever reason, Node doesn't seem to think it's outputting to a TTY. This is probably on Github not setting up a proper pseudo terminal environment for actions to run in. Unfortunately, there's no great way to properly solve this without Github's help. The environment checks have to come after the TTY checks, otherwise we'd break people piping output to other programs (which would get polluted with escape sequences). Unless we think Github can fix this with PTY support, unfortunately this is a nofix - Sorry about that :/ Wish I had a better answer. If a member of the Github staff wants to answer, I'll happily re-open this. |
Took the liberty of contacting Github about it. If they respond positively, I'll open this back up and track it ^^ Thanks for bringing it to our attention! |
Seems like we should call @chrispat here |
I also created an issue (hope I used right place for it) actions/runner-images#218 Thanks for finding the actual reason. |
Re-opening for visibility, then :) |
Can we just force colors on |
You can, sure. But as a general rule, no. It would break anyone using pipes. |
Oh, I forgot about pipes |
Solved with https://github.blog/changelog/2020-04-15-github-actions-sets-the-ci-environment-variable-to-true/? Maybe not if it's tty detection that's off 😀 |
This should be fixed in 651576a A new release should be great. |
I think this can be closed, as it's fixed with v7.2 |
Yep, thanks for the reminder. Let me know if this isn't solved by upgrading. |
@Qix- from what I can tell, this not solved yet: In the code, this check: if (haveStream && !streamIsTTY && forceColor === undefined) {
return 0;
} comes before this part: if ('CI' in env) {
// etc... When run on GitHub Actions, the first condition already returns 0. This is because of this open issue in the runner: actions/runner#241 As a result of this, chalk does use color in my action. I'd be happy to work out a reproducing example if anyone's interested, but it looks kind of obvious to me given the evidence above. |
Work around an ongoing issue with detecting colour support in GitHub Actions. See chalk/supports-color#106
Does anyone have this working? We're also seeing level 0 returned due to As @rethab said, this seems to be an issue on GitHub's side - but given it has been so long, perhaps a workaround can be implemented here? |
As mentioned at the top @mrmckeb FORCE_COLOR=2 works. See for example my PR here: Or any of the others referencing this issue and linked to it. |
That's a great solution, thanks. I was wondering if anyone had a solution that end-users wouldn't need to implement though. For now, I've implemented this: if (env.GITHUB_ACTIONS) {
const supportsColor = createSupportsColor({ isTTY: true });
if (supportsColor) {
chalk.level = supportsColor.level;
}
} |
GitHub Actions CI supports color output. But
chalk
use black/white output there.Seems like we have a false-negative detection at
support-color
.I am fixing the problem with
FORCE_COLOR=2
right now.The text was updated successfully, but these errors were encountered: