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

tide plugin should ignore Reviewable and possibly other status checks #7140

Closed
jlewi opened this issue Mar 5, 2018 · 26 comments
Closed

tide plugin should ignore Reviewable and possibly other status checks #7140

jlewi opened this issue Mar 5, 2018 · 26 comments
Assignees
Labels
area/prow Issues or PRs related to prow kind/feature Categorizes issue or PR as related to a new feature. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.

Comments

@jlewi
Copy link
Contributor

jlewi commented Mar 5, 2018

I think it would be useful if it was possible to configure tide to ignore certain status checks when deciding whether to merge or not.

I use reviewable for large PRs. With reviewable its easy for reviewers to forget to acknowledge/close all comments so that the status check for reviewable will pass.

My expectation is that if someone /lgtm and /approve this should override the reviewable status check.

Its possible to disable the reviewable status check; but I think it can be useful for people to see the status of the reviewable check in the GitHub issue.

@BenTheElder
Copy link
Member

@spxtr will fight you on this one. the idea is that all checks should be green before merging otherwise they aren't checks.

My expectation is that if someone /lgtm and /approve this should override the reviewable status check.

We don't want to override just any check though, many repos also use other CI

Its possible to disable the reviewable status check; but I think it can be useful for people to see the status of the reviewable check in the GitHub issue.

If it's useful to see the status, isn't it also useful for that status to eventually be green?

That said I've expected that tide would eventually grow this feature.
/cc @cjwagner @Kargakis @stevekuznetsov
/area prow

@k8s-ci-robot k8s-ci-robot added the area/prow Issues or PRs related to prow label Mar 5, 2018
@BenTheElder BenTheElder added the kind/feature Categorizes issue or PR as related to a new feature. label Mar 5, 2018
@dims
Copy link
Member

dims commented Mar 5, 2018

reviewable is gone as of this morning ( cc @thockin ) per traffic on #sig-contribex channel there were just too many notifications getting generated.

@spxtr
Copy link
Contributor

spxtr commented Mar 5, 2018

Heh, @BenTheElder knows me too well.

That said I've expected that tide would eventually grow this feature.

Fortunately it's a pretty simple feature to add. We already enumerate statuses on all PRs just to update the tide status.

@BenTheElder
Copy link
Member

@dims reviewable is gone from kubernetes, but not kubeflow.

@dims
Copy link
Member

dims commented Mar 5, 2018

ah thanks @BenTheElder !

@jlewi
Copy link
Contributor Author

jlewi commented Mar 6, 2018

If it's useful to see the status, isn't it also useful for that status to eventually be green?
That said I've expected that tide would eventually grow this feature.

As far as I can tell, reviewable requires reviewer to mark a comment thread as satisfied or non-blocking in order for the status check to be green.

In practice, reviewers often just do "/lgtm" without marking each individual comment thread closed.

@jlewi
Copy link
Contributor Author

jlewi commented Mar 6, 2018

Another example of a status check that caused problems for us was coveralls.io failing because of coverage decreases.

I think it would be useful to be able to override failed status checks either as the result of /approve or with a specific command like /override. I thought "/skip" might do this but it didn't seem to.

@BenTheElder
Copy link
Member

BenTheElder commented Mar 6, 2018 via email

@0xmichalis
Copy link
Contributor

0xmichalis commented Mar 6, 2018 via email

@sebastienvas
Copy link
Contributor

For istio, users tend to approve and wait for the test pass, so I am not sure that I want /approve to overwrite anything. I think in those case, it is OK for admin to manually merge a PR as this should be an exception. However the required check is something istio uses a lot. When we add new jobs, we like to have them stable for quite sometime before making them required, and we also want people to see that this check is coming and that they should look at the status, but we don't want to impact the flow until it is fully stable. We also want to be able to disable a test quickly when something is going really wrong. There are as many github usage as org so it is fair for people to disagree.

@BenTheElder
Copy link
Member

BenTheElder commented Mar 22, 2018 via email

@sebastienvas
Copy link
Contributor

Yes but I want the job to report while it is stabilizing. Also we don't only use Prow.

@stevekuznetsov
Copy link
Contributor

Yes but I want the job to report while it is stabilizing.

I'm not sure we generally want to suggest this practice -- with large organizations, broadcasting to N developers working on PRs that job Z is a canary and should be ignored is very confusing. The point of reporting to GitHub is to give a developer feedback on their changes -- if the job is not stable, it's not giving any dev useful signal on their code.

That being said, it seems like we have lazy consensus here that adding a means by which tide can ignore a status is a good idea.

@sebastienvas
Copy link
Contributor

The fact that github has the required check options suggests this is a valid use case, and a use case that people want to use. If all required checks are passing, github will show it is safe to merge, otherwise merge will be block. if we don't support required check, we have inconsistent messaging.

@stevekuznetsov
Copy link
Contributor

I think we're talking about two entirely separate issues -- I meant to say that exposing a job that is not stable to developers through a status on their PR is a bad idea for your organization.

From a correctness for tide point of view -- the question posed by this original issue -- it does seem like we have agreement on optional status contexts. Should we only require those that are marked as required in GitHub? Should we then also be subservient to GitHub's settings on required reviews or required signed commits?

@sebastienvas
Copy link
Contributor

I agree. Istio is far from being perfect and does not have the maturity that k8s has. We don't even have a 1.0 yet. It is possible that we will not use this feature in 6 months. As you know behavioral changes take time and patience.

I am working on a prototype code to get the required test working and the possibility to add all the other features, but I'll let those be implemented by people that need them.

@BenTheElder
Copy link
Member

BenTheElder commented Mar 23, 2018

The fact that github has the required check options suggests this is a valid use case, and a use case that people want to use.
GitHub having anti-features is not the best argument :^) GitHub also lets you close issues & PRs across repos with no way to block this (#5032).

REQUIRED is mostly useful for controlling the merge button, devs still want all green checks.
Edit: the human merge button, which I don't think we should conflate with the automated one which we define the behavior for...

That said, I do think we need a way to make checks optional. I don't think REQUIRED is the way to do it... I think you should have to configure tide to opt-out specific checks you don't want, statuses should be blocking by default.

@jlewi
Copy link
Contributor Author

jlewi commented Mar 28, 2018

Would it be possible to have an explicit command to tell tide to ignore failed status checks and merge the PR?

Since filing this request I've encountered this issue with a number of different status checks reviewable, coveralls, Google CLA status check (and potentially many others).

For some of these, like the Google CLA check its easy to get a status check which will never pass and not due to a problem with the PR. In which case manual merge/override is the only option. Configuring prow to treat that status check as optional probably isn't the right thing to do either.

An explicit prow command to allow approvers to dismiss failed status checks is much better than manual merging IMO because a manual merge requires write permissions on the repo.

One of the many reasons we (Kubeflow) love prow is that we can pretty much remove the need for anyone but the ci-bot to have permissions on the repo.

@fejta
Copy link
Contributor

fejta commented Mar 28, 2018

How about a command trusted people can use to override a failing context?

Like /override Google CLA to set this context to green on the PR

@stevekuznetsov
Copy link
Contributor

We will need to require /override for every stuck context -- so if you override one, the author pushes new code and a new status is added that is stuck (Coveralls re-triggered for instance), someone will need to /override it again. As long as we message that correctly, seems like a reasonable feature but also distinct from the original ask here.

@stevekuznetsov
Copy link
Contributor

/assign

@jlewi
Copy link
Contributor Author

jlewi commented Mar 28, 2018

@stevekuznetsov seems perfectly reasonable to me.

@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 Jun 26, 2018
@BenTheElder
Copy link
Member

BenTheElder commented Jun 26, 2018 via email

@cjwagner
Copy link
Member

This should now be possible. See the ContextOptions field of the tide config: https://godoc.org/k8s.io/test-infra/prow/config#Tide

@stevekuznetsov
Copy link
Contributor

/close

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/prow Issues or PRs related to prow kind/feature Categorizes issue or PR as related to a new feature. lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.
Projects
None yet
Development

No branches or pull requests