Is "ready to merge" also going to automatically merge if tests are green?
I think it shouldn't unless we also remove that label on a new push to the branch - consider this: PR is reviewed and approved and a simple change, committer reviews it and gives it an approval; tests currently running Label is applied While tests are running PR author pushes malicious code Tests for this new push pass and it's automatically merged. Because of this I think "ready to merge" is actually the wrong name as it conveys extra meaning that we want to avoid. (And I also don't want to remove approvals when pushing, there are many many cases where it's just a small change requested, and we give approval with "make this change; I'm pre-emptively approving it") -ash On Oct 24 2020, at 8:49 pm, Daniel Imberman <daniel.imber...@gmail.com> wrote: > I think ready to merge makes more sense > > via Newton Mail > (https://cloudmagic.com/k/d/mailapp?ct=dx&cv=10.0.51&pv=10.15.6&source=email_footer_2) > On Sat, Oct 24, 2020 at 12:13 PM, Jarek Potiuk <jarek.pot...@polidea.com> > wrote: > > Some short update - seems like we can get 50% 60% saving in job usage by > > the "unapproved PRs". We are progressing with implementation :D. > > > > On Sat, Oct 24, 2020 at 10:55 AM Jarek Potiuk <jarek.pot...@polidea.com > > (mailto:jarek.pot...@polidea.com)> wrote: > > > FYI. We found out with Tobiasz, that it will be a bit better and if we > > > add "Approved" label in the PR that the workflow will automatically set > > > when the issue gets approved. > > > > > > This way we have state of the PR approval (we know when it changes) and > > > know that we should re-run last "small matrix" successful run when the > > > label changes to "Approved". > > > > > > This will also be an additional indication to committers in case of > > > queues and delays we se. It might be that the "small" matrix run is > > > already successful, the PR gets approved but the "full matrix build" is > > > delayed due to queuing. Such PR will have green "merge" button and might > > > get merged by mistake - but it will not have the "Approved" label yet. > > > Setting the label and re-running the build will happen at the same time. > > > > > > But I start thinking this label should be named differently - how about > > > "Ready to merge" maybe? Or maybe other ideas? > > > > > > J. > > > > > > > > > > > > > > > On Sat, Oct 24, 2020 at 1:10 AM Daniel Imberman > > > <daniel.imber...@gmail.com (mailto:daniel.imber...@gmail.com)> wrote: > > > > +1000! > > > > > > > > via Newton Mail > > > > (https://cloudmagic.com/k/d/mailapp?ct=dx&cv=10.0.51&pv=10.15.6&source=email_footer_2) > > > > On Fri, Oct 23, 2020 at 8:22 AM, Jarek Potiuk <jarek.pot...@polidea.com > > > > (mailto:jarek.pot...@polidea.com)> wrote: > > > > > Thanks Tobiasz :). fantastic. > > > > > > > > > > I prepared a very short and simple design doc > > > > > https://docs.google.com/document/d/16rwyCfyDpKWN-DrLYbhjU0B1D58T1RFYan5ltmw4DQg/edit# > > > > > where we can collaborate. > > > > > > > > > > I also added you as collaborator to > > > > > https://github.com/potiuk/get-workflow-origin that we already use, > > > > > and I think you can update the "get workflow origin" plugin to > > > > > include status of the PR in the output of the action (ore maybe we > > > > > find out that we already have what we need in GitHub context). > > > > > > > > > > I will take a look at finding out how/if we can trigger the "full > > > > > build" automatically when approval status changes from "Not approved" > > > > > to "Approved". > > > > > > > > > > J. > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Oct 22, 2020 at 7:20 PM Tobiasz Kędzierski > > > > > <tobiasz.kedzier...@polidea.com > > > > > (mailto:tobiasz.kedzier...@polidea.com)> wrote: > > > > > > Hi Jarek. > > > > > > > > > > > > sounds good to me. I am happy to help you as much as I can with it. > > > > > > BR > > > > > > Tobiasz > > > > > > > > > > > > > > > > > > On Thu, Oct 22, 2020 at 9:06 AM Jarek Potiuk > > > > > > <jarek.pot...@polidea.com (mailto:jarek.pot...@polidea.com)> wrote: > > > > > > > TLDR; I thought about it a bit and I have a proposal on how to > > > > > > > solve it even better - one that can be implemented over the > > > > > > > weekend (I volunteer :) ) and that can be very easily shared and > > > > > > > adopted by the other ASF projects so that we all collectively > > > > > > > decrease the strain on Github Actions. > > > > > > > > > > > > > > This is in parallel to our efforts on having self-hosted workers > > > > > > > of course, but I think it will be needed anyway. Let me put it in > > > > > > > a bit of context > > > > > > > > > > > > > > Problem statement: > > > > > > > > > > > > > > * the root cause of the problem is that we are competing with > > > > > > > many other projects of ASF for the 180 jobs. I have started the > > > > > > > discussion in bui...@apache.org (mailto:bui...@apache.org) about > > > > > > > this: > > > > > > > https://lists.apache.org/thread.html/r1708881f52adbdae722afb8fea16b23325b739b254b60890e72375e1%40%3Cbuilds.apache.org%3E > > > > > > > and it's clear all ASF projects using GA have the same problem > > > > > > > and compete against each other for the jobs. > > > > > > > * if we decrease the strain on our side, this is not solving the > > > > > > > problem long term. We keep on doing it already, and we already > > > > > > > decrease a lot of strain, but other projects from ASF increase > > > > > > > their strain in the meantime (Apache Beam, Skywalking, and few > > > > > > > other projects are becoming heavy GitHub Actions users). > > > > > > > * in all the projects that I looked at, we have the same root > > > > > > > cause. Matrix strategy of builds causes enormous strain on Github > > > > > > > Actions if the whole matrix is run for all PRs. We are going to > > > > > > > make it works sustainably only if we come up with an easy > > > > > > > solution, that can be applied to all those projects. > > > > > > > * I think the comment-based PR triggering process is complex and > > > > > > > cumbersome to follow. It puts a LOT more effort on the committers > > > > > > > because they not only have to review and comment on the PRs but > > > > > > > also make decisions that those PRs are ready for "full build". > > > > > > > This is a lot of unnecessary effort and complicated process that > > > > > > > many of the ASF projects will not like to adopt > > > > > > > > > > > > > > Proposed Solution: > > > > > > > > > > > > > > Add an easy way to limit the matrix strategy to one "default" > > > > > > > combo for PRs THAT HAVE NOT BEEN APPROVED BY COMMITTERS YET > > > > > > > > > > > > > > This can be easily done with Github Actions workflows - no need > > > > > > > to write a bot for this. > > > > > > > > > > > > > > Some details: > > > > > > > > > > > > > > * Custom GitHub Action (generic) that checks if the PRs are > > > > > > > approved by Committers (and no "disapprovals"). The action would > > > > > > > produce an output -> "Approved", "Not approved". The output could > > > > > > > be used to determine the matrix strategy scope (in our case we > > > > > > > already have support for dynamic matrix strategy that I added a > > > > > > > few weeks ago - so it's just a matter of wiring the output in). > > > > > > > * Very small workflow with the same GithubAction run on > > > > > > > "pull_request_target" event. That workflow would effective > > > > > > > "observe" the PR, and when the status changes from "not approved" > > > > > > > to "approved", it triggers a PR build (with the "full matrix > > > > > > > strategy" this time because the PR will be already approved). > > > > > > > This seems to be entirely possible. This "pull_request_target" > > > > > > > workflow - similarly to "workflow_run" runs with a "write" access > > > > > > > token and uses a "main branch" workflow version and it could > > > > > > > easily trigger a rerun of the last PR build in such case. > > > > > > > > > > > > > > Benefits: > > > > > > > > > > > > > > - I think I could write such an action over the coming weekend > > > > > > > (happy to collaborate with anyone on that). I will first search > > > > > > > if someone has done something similar of course because maybe it > > > > > > > can be done faster this way, but I am quite confident after > > > > > > > writing my https://github.com/potiuk/cancel-workflow-runs which > > > > > > > we already use to limit the strain that it is doable in a day/two > > > > > > > - no need to change the process we have - we continue working as > > > > > > > we did and simply "approved" PRs will be the full matrix strategy > > > > > > > ones but the "not-approved-ones" will run a limited version of > > > > > > > the checks. > > > > > > > - no way to accidentally submit a breaking PR - when the > > > > > > > committer approves the PR that has not been approved before, the > > > > > > > PR build will be re-run with the "full matrix strategy" and not > > > > > > > mergeable until it finishes > > > > > > > - last-but-not-least: we can propose (and help) other ASF > > > > > > > projects to use the action in their own GitHub Actions. It will > > > > > > > not be changing anyone's process - which makes it super-easy to > > > > > > > adopt and I can even turn it into a "recommended solution" by > > > > > > > Apache Infra - similarly as Airflow's CI architecture is a > > > > > > > recommended solution already for the integration of GA with > > > > > > > DockerHub > > > > > > > https://cwiki.apache.org/confluence/display/INFRA/Github+Actions+to+DockerHub > > > > > > > > > > > > > > WDYT? > > > > > > > > > > > > > > J > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Oct 2, 2020 at 7:59 PM Jarek Potiuk > > > > > > > <jarek.pot...@polidea.com (mailto:jarek.pot...@polidea.com)> > > > > > > > wrote: > > > > > > > > I think it's a good idea, but I'd augment it a bit. A better > > > > > > > > option will be to run all test types but > > > > > > > > for only one chosen combination of "Python + DB type + DB > > > > > > > > version". > > > > > > > > > > > > > > > > I often don't even look at the PR until the tests pass and this > > > > > > > > would be much better this way. > > > > > > > > And often people have slower/small machines so they submit the > > > > > > > > PR to see if they have not > > > > > > > > broken any other tests. This is much, much easier than doing it > > > > > > > > locally - because then in one > > > > > > > > "fire&forget" you can run static, doc, unit tests, integration, > > > > > > > > and Kubernetes ones,. And it's a valid > > > > > > > > thing. > > > > > > > > > > > > > > > > Also, we have to make sure that such PR does not become "Green" > > > > > > > > before all the tests are run. > > > > > > > > This might be rather problematic as Github does not yet have a > > > > > > > > " manual" Approval step in > > > > > > > > Github Actions (it's coming in Q4: > > > > > > > > https://github.com/github/roadmap/issues/99). > > > > > > > > > > > > > > > > We have many tests and already we hit a bug a few times, where > > > > > > > > not all tests have yet started > > > > > > > > and we've merged such PR. I can imagine it will happen more and > > > > > > > > more often if all PRs will > > > > > > > > only run a subset of tests. It will be very easy to make that > > > > > > > > mistake because even if we run a subset of > > > > > > > > those tests, we have so many jobs that you cannot see them all > > > > > > > > in the GitHub UI. > > > > > > > > > > > > > > > > So we will have to have a check that fails the PR but marks it > > > > > > > > somehow as "Ready for review" for example adding > > > > > > > > a label "Ready for review" when the subset of tests succeeds. > > > > > > > > > > > > > > > > Also, this might not be needed (or less important) if we > > > > > > > > implement: https://github.com/apache/airflow/issues/10507 > > > > > > > > "Selective Tests" > > > > > > > > for which I have an open PR. They will give much bigger > > > > > > > > improvements - because, in the vast majority of cases, the > > > > > > > > tests will take > > > > > > > > very little time - giving feedback > > > > > > > > about relevant tests in a few minutes rather than half-an-hour. > > > > > > > > We can also combine those two. > > > > > > > > > > > > > > > > It seems that I managed to finish some of the stuff that I > > > > > > > > thought will take more time, so I might come back to it next > > > > > > > > week > > > > > > > > if it goes as well as I planned. > > > > > > > > > > > > > > > > J. > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Fri, Oct 2, 2020 at 3:57 AM Daniel Imberman > > > > > > > > <daniel.imber...@gmail.com (mailto:daniel.imber...@gmail.com)> > > > > > > > > wrote: > > > > > > > > > I’m not too worried about that. I think people would learn > > > > > > > > > pretty quickly. It hasn’t been an issue for the kubernetes > > > > > > > > > community so I can’t imagine it being an issue for us. > > > > > > > > > End-of-day, we only have a limited amount of compute power > > > > > > > > > and this will increase the speed we merge the PR’s that have > > > > > > > > > passed basic code quality checks. > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Oct 1, 2020 at 2:19 PM, Tomasz Urbaszek > > > > > > > > > <turbas...@apache.org (mailto:turbas...@apache.org)> wrote: > > > > > > > > > > I think I can agree. Especially with flaky tests, some > > > > > > > > > > contributors may be confused that some of the tests don't > > > > > > > > > > work on CI but work locally... > > > > > > > > > > > > > > > > > > > > Checking the code quality is good first step. Once there's > > > > > > > > > > a review we can start tests on CI. > > > > > > > > > > > > > > > > > > > > On the other hand, I can see people asking for starting the > > > > > > > > > > tests or being even more confused why some PRs have more CI > > > > > > > > > > builds than others... > > > > > > > > > > > > > > > > > > > > Cheers, > > > > > > > > > > Tomek > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > On Thu, Oct 1, 2020 at 10:29 PM Daniel Imberman > > > > > > > > > > <daniel.imber...@gmail.com > > > > > > > > > > (mailto:daniel.imber...@gmail.com)> wrote: > > > > > > > > > > > Hello all, > > > > > > > > > > > > > > > > > > > > > > With the recent uptick in airflow contribution and pull > > > > > > > > > > > requests, I have a proposal that I hope will ensure that > > > > > > > > > > > we do not find ourselves in a CI backlog hell. I noticed > > > > > > > > > > > that on the Kubernetes project, pull requests do not run > > > > > > > > > > > integration test until a committer submits a "ready to > > > > > > > > > > > test" command to the CI bot. This step can prevent draft > > > > > > > > > > > PRs or un-reviewed PRs from taking github CI resources. > > > > > > > > > > > It is worth noting that with breeze's docker based > > > > > > > > > > > testing system, users have the exact same testing > > > > > > > > > > > capabilities locally as they would on our CI. > > > > > > > > > > > > > > > > > > > > > > I propose that we allow unverified PR's to run basic and > > > > > > > > > > > static tests, but not perform the full test suite or > > > > > > > > > > > integration test without first being reviewed. > > > > > > > > > > > > > > > > > > > > > > What does everyone think? > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > > > Jarek Potiuk > > > > > > > > Polidea (https://www.polidea.com/) | Principal Software Engineer > > > > > > > > M: +48 660 796 129 (tel:+48660796129) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > > > > > Jarek Potiuk > > > > > > > Polidea (https://www.polidea.com/) | Principal Software Engineer > > > > > > > M: +48 660 796 129 (tel:+48660796129) > > > > > > > > > > > > > > > > > > > > > > -- > > > > > > > > > > Jarek Potiuk > > > > > Polidea (https://www.polidea.com/) | Principal Software Engineer > > > > > M: +48 660 796 129 (tel:+48660796129) > > > > > > > > > > > > > > -- > > > > > > Jarek Potiuk > > > Polidea (https://www.polidea.com/) | Principal Software Engineer > > > M: +48 660 796 129 (tel:+48660796129) > > > > > > > > > -- > > > > Jarek Potiuk > > Polidea (https://www.polidea.com/) | Principal Software Engineer > > M: +48 660 796 129 (tel:+48660796129)