Skip to content
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

reconsider posting CI comments on every test failure #3621

Open
BenTheElder opened this issue Apr 19, 2019 · 41 comments
Open

reconsider posting CI comments on every test failure #3621

BenTheElder opened this issue Apr 19, 2019 · 41 comments
Assignees
Labels
kind/bug Categorizes issue or PR as related to a bug. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. sig/contributor-experience Categorizes an issue or PR as relevant to SIG Contributor Experience. sig/testing Categorizes an issue or PR as relevant to SIG Testing. sig/usability Categorizes an issue or PR as relevant to SIG Usability.
Milestone

Comments

@BenTheElder
Copy link
Member

Currently Kubernetes PRs get a lot of comments from @k8s-ci-robot, many of which are to notify of failing tests. This tends to drown out actual human interactions.

I know this came up at some point in the past, but I'm having difficulty finding why we do this and I'd like to revisit it.

Right now prow deletes it's job-results comment every time results change, and posts a new comment if there are any failures. This can be very spammy (see below), and punishes reviewers and approvers for being subscribed to PRs with tons of excess notifications.

Most (all?) other CI on GitHub merely post to the "status" or "checks" APIs (https://help.github.com/en/articles/about-status-checks) which Prow / @k8s-ci-robot also does. We should consider only doing this instead of posting comments on every failure to reduce pressure on developers's notifications.

Additionally, the comments can be misleading with stale state in them kubernetes/test-infra#4602

If we agree that this is reasonable, it should be relatively straightforward to make it possible in test-infra.

@k8s-ci-robot k8s-ci-robot added the needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. label Apr 19, 2019
@BenTheElder
Copy link
Member Author

BenTheElder commented Apr 19, 2019

/sig contributor-experience
/sig testing

Example:
EDIT: note that after a page refresh most of these comments will go away (the bot deletes them), they will not however leave your inbox :-)

image

@k8s-ci-robot k8s-ci-robot added sig/contributor-experience Categorizes an issue or PR as relevant to SIG Contributor Experience. sig/testing Categorizes an issue or PR as relevant to SIG Testing. and removed needs-sig Indicates an issue or PR lacks a `sig/foo` label and requires one. labels Apr 19, 2019
@dims
Copy link
Member

dims commented Apr 20, 2019

yes please +1 to test drive this in test-infra.

@guineveresaenger
Copy link
Contributor

+1 if only to get folks off my back that it's the welcome message that's at fault 😝

@cblecker
Copy link
Member

A few thoughts:

  • This will impact folks who have a primarily e-mail driven workflow. It may impact notification driven workflows too, as I'm not sure if a context update triggers the notification bell, even if not an e-mail.
  • The example is a bit misleading, as you'll only get a screen like that if you don't refresh the GitHub window. The previous comments would get deleted/edited so that there aren't duplicate comments from the bot.
  • The one part that I personally really like about the bot's comments is the clear notification of "this is what failed, on which commit, here's a link to the log, and here's the command to re-run". I realize that the "what failed" and "link to log" would still be available in the status contexts section, but you don't get the clarity of which commit the posted status is for, or the retest command in the status contexts.
  • The status context section doesn't appear on mobile unless you have direct write access to a repo, so reviewing test results on mobile would be much move difficult (I will grant this is likely an edge case).

@BenTheElder
Copy link
Member Author

BenTheElder commented Apr 20, 2019

This will impact folks who have a primarily e-mail driven workflow. It may impact notification driven workflows too, as I'm not sure if a context update triggers the notification bell, even if not an e-mail.

Those workflows are likely broken to begin with, as we do not post a comment when tests pass. You can only know that they failed at some point.

The example is a bit misleading, as you'll only get a screen like that if you don't refresh the GitHub window. The previous comments would get deleted/edited so that there aren't duplicate comments from the bot.

You get a notification for each of these comments because the comments are deleted and a new one posted, which was the intention of the example. Refreshing and seeing less comments visibly is correct though, but you were still notified for each of these.

The one part that I personally really like about the bot's comments is the clear notification of "this is what failed, on which commit, here's a link to the log, and here's the command to re-run". I realize that the "what failed" and "link to log" would still be available in the status contexts section, but you don't get the clarity of which commit the posted status is for, or the retest command in the status contexts.

Breaking that down..

this is what failed

This is in the status contexts

on which commit

You should be able to see the commit in the link, or we could put it in the description.

here's a link to the log

Log links are in the status contexts.

and here's the command to re-run".

We post a welcome comment with instructions for the other commands. Telling users how to rerun something should not require a comment for every failure.

Note that the comment table values are also often misleading with stale results.

The status context section doesn't appear on mobile unless you have direct write access to a repo, so reviewing test results on mobile would be much move difficult (I will grant this is likely an edge case).

Desktop view works on mobile, github even suggests it now at the bottom of the page.

@vllry
Copy link
Contributor

vllry commented Apr 21, 2019

Personally I get some use from the notifications - IMHO it would be nice to get a single comment, such as "1 test failed and more an ongoing" without comment followup, or "here's the complete status report". But I'd rather axe them all than keep getting hammered by prow as-is. :|

@cblecker
Copy link
Member

We post a welcome comment with instructions for the other commands. Telling users how to rerun something should not require a comment for every failure.

Note that the comment table values are also often misleading with stale results.

We post the specific tests, and the specific retest comments (e.g. /test pull-kubernetes-verify). This make a copy paste really easy and clear.

The status context section doesn't appear on mobile unless you have direct write access to a repo, so reviewing test results on mobile would be much move difficult (I will grant this is likely an edge case).

Desktop view works on mobile, github even suggests it now at the bottom of the page.

It's still a valid criticism of doing away with the comment table. The desktop view isn't great on mobile. As I said previously, it's an edge case.. but it's still a valid one.

@nikhita
Copy link
Member

nikhita commented May 7, 2019

@BenTheElder
Copy link
Member Author

We post the specific tests, and the specific retest comments (e.g. /test pull-kubernetes-verify). This make a copy paste really easy and clear.

IMHO this is still exactly what the welcome bot should be for, or we can put the copy paste command on the spyglass page. This does not have to be a repetitive comment.

It's still a valid criticism of doing away with the comment table. The desktop view isn't great on mobile. As I said previously, it's an edge case.. but it's still a valid one.

We have friends at GitHub, IMHO we should not "fix" their mobile UX by spamming inboxes 😞

@BenTheElder
Copy link
Member Author

BenTheElder commented May 16, 2019

I would also like to point out that roughly "GitHub notifications are a tire fire" is frequent complaint of Kubernetes project members, such that many of them simply don't use GitHub notifications in any form. I think this is detrimental to the project.

More specifically Prow contributes a very large number of those comments in ways that would be unusual in other projects, a major one being commenting after every individual test failure which notifies everyone on the PR.

On nearly any other project I would just check the status contexts if I'm concerned with the test results, without it sending any comments to the whole thread.

I've personally resorted to specifically blocking Prow comments to the extent possible but I think this UX is bad for everyone. kubernetes/test-infra#12488 (comment)

We've also found that even highly experienced contributors don't notice the retest commands in these comments.
I would hazard that this is because they already mentally block out these comments as spam.
https://kubernetes.slack.com/archives/C09QZ4DQB/p1557951304418200

@parispittman parispittman added this to the August milestone Jun 19, 2019
@parispittman parispittman added kind/bug Categorizes issue or PR as related to a bug. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. kind/design Categorizes issue or PR as related to design. labels Jul 3, 2019
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 1, 2019
@nikhita
Copy link
Member

nikhita commented Oct 2, 2019

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Oct 2, 2019
@cblecker cblecker self-assigned this Oct 4, 2019
@cblecker
Copy link
Member

asking some questions about this on the contributor survey #3969

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 19, 2020
@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 12, 2021
@kwiesmueller
Copy link
Member

I just got pointed to this after asking if notifications could be reduced which is especially hard to work with since the GitHub mobile app.
I'd love to see one comment that gets updated instead of a new mail/notification for every new failure during a single run.
On the other hand I don't know other peoples mail based workflows. I regularly jump to test results myself from mail, but in most cases I land on GitHub in the end anyways.

It should not be necessary to disable notifications for GitHub just to stay sane working on any single project.
But to me comments are also primarily for communicating to people and the Jobs overview provided by GitHub on the bottom is mostly enough for me.

@spiffxp
Copy link
Member

spiffxp commented Feb 1, 2021

Another related issue over this (it aged out) kubernetes/test-infra#1723

It mentioned kubernetes/test-infra#11341 was an attempt to address? But was reverted in kubernetes/test-infra#11472 due to "lack of consensus"

@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Mar 3, 2021
@BenTheElder
Copy link
Member Author

/remove-lifecycle rotten
what do we think is necessary to achieve a consensus on this?
do we need to send out a survey? to who?
do I need to go to a contribex meeting?
right now this is blocked on an arbitrary undefined bar #3621 (comment)

cc @kubernetes/sig-contributor-experience @kubernetes/sig-testing

@k8s-ci-robot k8s-ci-robot removed the lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. label Mar 5, 2021
@BenTheElder
Copy link
Member Author

these comments are frequently confusingly out of date, e.g:
Screen Shot 2021-03-04 at 4 10 20 PM
they're easily de-sychronized with the actual state in the github built-in status feature, which we also use.

@BenTheElder
Copy link
Member Author

Applicable data: https://github.com/kubernetes/community/tree/master/sig-contributor-experience/surveys/2019#agreement-with-statements

re-looking at this data, I don't think there's a question clearly about test failure notifications.
the question asks if the notifications are helpful without differentiating the other classes of comment we post

@alvaroaleman
Copy link
Member

At the very least what I would really like to see is not keeping references to jobs that ran on outdated revisions in the comment, that is tremendously confusing: #3621 (comment)

@BenTheElder
Copy link
Member Author

BenTheElder commented Mar 5, 2021

+1, there's a similar problem with removing jobs and even though the github statuses go away correctly the failure comment will keep existing failures forever if there is no pass.

EDIT: we're likely to have many of these issues as long as we report jobs to contributors in two distinct ways, one of which involves an API we can do on the fly per-job in a reliable fashion (given an actual github API for this), the other involves racily editing a comment to try to bring it closer in-line with the status we're reporting. The comment system is much more brittle.

@lasomethingsomething
Copy link
Contributor

A few months ago a UX designer was looking at this issue -- did anything come of that in Contribex?

@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jun 3, 2021
@fejta-bot
Copy link

Stale issues rot after 30d of inactivity.
Mark the issue as fresh with /remove-lifecycle rotten.
Rotten issues close after an additional 30d of inactivity.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Jul 3, 2021
@mrbobbytables
Copy link
Member

/remove-lifecycle rotten
/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. labels Jul 3, 2021
@MadhavJivrajani
Copy link
Contributor

/remove-kind design
/kind feature
kind/design is migrated to kind/feature, see #6144 for more details

@k8s-ci-robot k8s-ci-robot added kind/feature Categorizes issue or PR as related to a new feature. and removed kind/design Categorizes issue or PR as related to design. labels Oct 11, 2021
@mrbobbytables mrbobbytables modified the milestones: Next, v1.27 Dec 15, 2022
@mrbobbytables
Copy link
Member

/assign @MadhavJivrajani

@jberkus
Copy link
Contributor

jberkus commented May 8, 2023

@MadhavJivrajani is this issue still relevant? If not, can you close it? Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Categorizes issue or PR as related to a bug. kind/cleanup Categorizes issue or PR as related to cleaning up code, process, or technical debt. kind/feature Categorizes issue or PR as related to a new feature. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. sig/contributor-experience Categorizes an issue or PR as relevant to SIG Contributor Experience. sig/testing Categorizes an issue or PR as relevant to SIG Testing. sig/usability Categorizes an issue or PR as relevant to SIG Usability.
Projects
None yet
Development

No branches or pull requests