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.

Reply via email to