{"action":"created","issue":{"url":"https://api.github.com/repos/nodejs/node/issues/1415","repository_url":"https://api.github.com/repos/nodejs/node","labels_url":"https://api.github.com/repos/nodejs/node/issues/1415/labels{/name}","comments_url":"https://api.github.com/repos/nodejs/node/issues/1415/comments","events_url":"https://api.github.com/repos/nodejs/node/issues/1415/events","html_url":"https://github.com/nodejs/node/issues/1415","id":68245974,"number":1415,"title":"Automatic CI for pull requests (progress tracking issue)","user":{"login":"rvagg","id":495647,"avatar_url":"https://avatars.githubusercontent.com/u/495647?v=3","gravatar_id":"","url":"https://api.github.com/users/rvagg","html_url":"https://github.com/rvagg","followers_url":"https://api.github.com/users/rvagg/followers","following_url":"https://api.github.com/users/rvagg/following{/other_user}","gists_url":"https://api.github.com/users/rvagg/gists{/gist_id}","starred_url":"https://api.github.com/users/rvagg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rvagg/subscriptions","organizations_url":"https://api.github.com/users/rvagg/orgs","repos_url":"https://api.github.com/users/rvagg/repos","events_url":"https://api.github.com/users/rvagg/events{/privacy}","received_events_url":"https://api.github.com/users/rvagg/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/nodejs/node/labels/build","name":"build","color":"eb6420"},{"url":"https://api.github.com/repos/nodejs/node/labels/meta","name":"meta","color":"fef2c0"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":12,"created_at":"2015-04-14T02:54:17Z","updated_at":"2016-04-08T22:42:49Z","closed_at":null,"body":"/cc @iojs/build\r\n\r\nThis is not _done_ yet but I've spent some quality time with my head in code (as a leisure activity!) and have made good enough progress at this point to start turning it on and experimenting with it.\r\n\r\nThere are 3 components I'm working on:\r\n\r\n - GitHub Webhook endpoint that listens to events from the repo and takes action based on the type of event. For pull requests it'll act based on opening a new PR and updating an existing PR. It'll also look up the user that did the PR and decide whether they are \"trusted\" or \"untrusted\" based on whether they are in the iojs/Collaborators team on GitHub. It then passes on this data to the jenkins interactor.\r\n - Jenkins Interactor that knows how to speak Jenkins. It can receive authenticated requests for new runs for either trusted or untrusted users on any user/project#branch combo on GitHub. For untrusted users it'll run these in the iojs+any-pr+containers job and for trusted users it'll run them on iojs+any-pr+multi. It also keeps track of the builds on both of these jobs so it knows (a) the status of them including what types of slaves they are run on and the status of each of those slaves and (b) the user/project#branch parameters so you can look up a build based on either a build number or a user/project#branch combo and you'll get the _latest_ build for that combo.\r\n - Status badges for GitHub - this component is the most incomplete but I have a lot of the parts of it in place thanks to nodei.co and all the data is now available in the Jenkins Interactor. The idea is that the bot that interacts with GitHub will either comment on the PR or update the PR head comment to include a badge and that badge would show the current status of the _latest_ build for the user/project#branch combo of that PR including what the status of each of the slaves are. So you'll get to see right in the PR whether you're building, passing or failing on any of the slave.\r\n\r\nI've hooked up what I have to this repo and re-delivered a webhook notification for the last PR #1412 and it's triggered a build here: https://jenkins-iojs.nodesource.com/job/iojs+any-pr+multi/497/\r\n\r\nThe containers build jobs need a lot of love because they just haven't been used and we have problems with git, file descriptors and some other random things that keep them from being useful.\r\n\r\nNot sure what the timeline is for getting all of this working but one of my next tasks is to get the code of this up in a repo on iojs so others can contribute. I'll post status updates here but at least for now at least collaborators can trigger CI runs themselves without having full Jenkins access."},"comment":{"url":"https://api.github.com/repos/nodejs/node/issues/comments/207636670","html_url":"https://github.com/nodejs/node/issues/1415#issuecomment-207636670","issue_url":"https://api.github.com/repos/nodejs/node/issues/1415","id":207636670,"user":{"login":"Trott","id":718899,"avatar_url":"https://avatars.githubusercontent.com/u/718899?v=3","gravatar_id":"","url":"https://api.github.com/users/Trott","html_url":"https://github.com/Trott","followers_url":"https://api.github.com/users/Trott/followers","following_url":"https://api.github.com/users/Trott/following{/other_user}","gists_url":"https://api.github.com/users/Trott/gists{/gist_id}","starred_url":"https://api.github.com/users/Trott/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Trott/subscriptions","organizations_url":"https://api.github.com/users/Trott/orgs","repos_url":"https://api.github.com/users/Trott/repos","events_url":"https://api.github.com/users/Trott/events{/privacy}","received_events_url":"https://api.github.com/users/Trott/received_events","type":"User","site_admin":false},"created_at":"2016-04-08T22:42:49Z","updated_at":"2016-04-08T22:42:49Z","body":"Is this still something that's wanted? If so, is there anything actionable at this time? Maybe some progress has happened that wasn't noted here?"}}