Hey, I could try to help with implementing "sympy-bot work" mode. I like idea with github hooks, but I think that first we should rid from pollings on review site, there is my issue about that https://github.com/sympy/sympy-bot/issues/112
понедельник, 25 июня 2012 г., 2:20:40 UTC+6 пользователь Ondřej Čertík написал: > > Hi, > > I need some help with figuring out how to implement robust pull > requests testing with sympy-bot. > > The webapp at reviews.sympy.org (the source code of which is in the > "web" directory of sympy-bot) > has a database of all pull requests, and I can quite easily implement > almost any interaction between > the sympy-bot and the app. The idea is that the webapp's database has > and up-to-date information > about all pull requests and since it is under our control, we can > easily implement any interaction > with the sympy-bot. That seems like a very robust model to me. > > The problem is that the database is currently updated by polling the > github API periodically by recursively > going over all pull requests and comparing any changes against our > database (so it's a lot of traffic, > lots of github API requests and a lot of database accesses). Recently > we were running over various app engine quota, so I had to eventually > lower the polling period to > once or twice a day. Not very good. > > What is the best way to notify our app, that > > a) a new pull request was created > b) a new commit was pushed into the pull request > > ? I was hoping to use github webhooks > (https://help.github.com/articles/post-receive-hooks), but it seems > that > only notifies us of pushing into the "master" of the sympy repository. > Another option are "Events" > (http://developer.github.com/v3/events/), for example here is a list > of such events for the sympy repo: > > > http://hurl.it/hurls/999dedbb7a1221912b5dcbea69d8b8b5b235a955/f6e36af68fd5b39d97b4d84cd12a067184f3ec92 > > > it shows all recent changes in issues. It's a simple request, so we > can poll it let's say every 5 minutes > and keep an updated list of changes in our database. This should be > very lightweight. > From this list, we should be able to determine both a) and b) above. > > Update: so actually one should be able to register these "hooks" here: > > http://developer.github.com/v3/repos/hooks/ > > I am not quite sure currently how this is related to the old "hooks" > above, but at least from the docs this > should do exactly what we need --- we would listen to these hooks and > simply trigger a build whenever > there is a push of a new commit to the pull request > > And so the way I see it is that the first iteration would be to > implement "sympy-bot work", which would > connect to our webapp, and whenever there is a new pull request or any > new commit, or > a *comment* with a specific command like "sympy-bot test", it would > simply run all tests on the pull request > (just like it does now). > > Anyone is then free to run such sympy-bot in the "work" mode. I don't > think we have to worry about spam here, > because you still have to use your github credentials to post any > comments. > > ------------------------------------------ > > So here is my proposed step by step TODO list: > > 1) Implement "sympy-bot work" with the following features: > It would poll the github API directly (as often as the rate limiting > of the github API allows) and it would > listen to 3 types of events: > > 1a) new pull request created > 1b) new commit pushed into the pull request > 1c) A comment (by anybody) of the exact text "sympy-bot test" > > It would trigger a test and report to the pull request just as it is > now. The 1c) feature allows us to > easily test older pull requests manually, while 1a) and 1b) will > automatically test new pull requests. > > 2) I will leave such sympy-bot running for Python 3.2 and Python 2.7 > on my linode. Other people > can keep it running on their hardware. > > 3) After the above works well, we can setup automatic hooks to our > webapp, and manage all such > changes centrally by the webapp, and the sympy-bot would simply stay > connected to the webapp > without having to periodically poll the github API. > > ----------------- > > > If anybody wants to help out with 1), that would be a huge help. I > think it should be relatively easy to implement > and it would allow us to automatically test all pull requests. I can > then setup 2). Finally, maybe later > we can implement 3), but that's not a big deal now. > > Ondrej > -- You received this message because you are subscribed to the Google Groups "sympy" group. To view this discussion on the web visit https://groups.google.com/d/msg/sympy/-/m-yP6shaOFQJ. To post to this group, send email to sympy@googlegroups.com. To unsubscribe from this group, send email to sympy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.