Will, Do you have an implementation of notify-pr? I am asking as you specify it will be implemented in golang which seems odd. It is not amongst the 7 or so languages already in use.
On Fri, Mar 4, 2016 at 1:54 AM, Will Stevens <williamstev...@gmail.com> wrote: > Hey Everyone, > As I am sure most of you are aware, I have been focusing a lot on ways to > get CI integrated back into the community. > > Today I build a little POC to validate some ideas and get a feel for a > potential approach for getting CI integrated into the Github pull request > workflow. > > There are multiple individuals/companies focusing on CI right now (which > is a good thing), but there has not really been much discussion (that I am > aware of) for how these different CI runs will push back results to the > community. I want to make sure that nobody's work on this topic goes to > waste, so my goal is to provide a simple and consistent way for everyone to > push their results back to the community. > > Here is the basic idea (please give feedback): > - A simple cross platform command line tool with zero dependencies will be > provided (and open sourced) which will handle the submission of the CI > results back to the community. It is written in Golang and is currently > called 'notify_pr'. > - At the end of a CI execution, the CI should automate the execution of > this tool to handle updating the appropriate PR with the results. > > Configuration can be done via the command line or through an INI file. > Here is an example of the configuration details. The commit is the > commit that the CI just executed against. > > token = <your github token> > owner = apache > repo = cloudstack > commit = c8443496d3fad78a4b1a48a0992ce545bde299e8 > > summary_file = <a text file summary of the run> > full_detail_dir = <a directory structure to be recursively uploaded to > object store> > full_detail_files = <a comma separated list of files to upload to object > store> > store_api = <swift or s3> > store_endpoint = <url endpoint> > store_identity = <keystone identity or aws access key> > store_secret = <keystone password or aws secret key> > > I have not yet implemented the object storage endpoints, but I have code > to do it from a different project, so I just need to add it. I will be > able to host my CI output in a swift object store, but others may need to > use AWS S3. Maybe we can get sponsorship for this storage. We will only > keep the logs for a window of like a week or so on the object store so the > storage usage will not be ever growing. > > Basically, the tool takes the details of the repository you are validating > a Pull Request for and the commit you are building. It also takes the > files you would like to push to the pull request. The summary file will be > shown as text in the pull request comment and the other files will be > uploaded to an object store and will be publically available for a period > of time (probably about a week and then get cleaned up, details TBD). The > files to be uploaded to object store could be either specified as > individual files, OR a target directory and all the files in that directory > will be recursively uploaded to the object store. > > When the tool is run, it will scan through all the open pull requests in > the target repository and when it finds the pull request corresponding to > the commit in question, it will post the details as a comment to that pull > request. This functionality is currently working (see the attached > screenshot). I can change the formatting and such, this is just an example. > > This is still a very rough concept that I have only worked on for a day, > but hopefully you guys agree that it is a good start towards a consistent > feedback mechanism for the community to take advantage of the different > distributed CI installations. > > Please voice your feedback and concerns. I am sure I have not thought of > everything and we may still want to make fundamental changes to the > approach, but I think the concept is solid. > > Cheers, > > Will > -- Daan