github.com/lmars/docker@v1.6.0-rc2/project/TOOLS.md (about) 1 # Tools 2 3 This page describes the tools we use and infrastructure that is in place for 4 the Docker project. 5 6 ### CI 7 8 The Docker project uses [Jenkins](https://jenkins.dockerproject.com/) as our 9 continuous integration server. Each Pull Request to Docker is tested by running the 10 equivalent of `make all`. We chose Jenkins because we can host it ourselves and 11 we run Docker in Docker to test. 12 13 #### Leeroy 14 15 Leeroy is a Go application which integrates Jenkins with 16 GitHub pull requests. Leeroy uses 17 [GitHub hooks](http://developer.github.com/v3/repos/hooks/) 18 to listen for pull request notifications and starts jobs on your Jenkins 19 server. Using the Jenkins [notification plugin][jnp], Leeroy updates the 20 pull request using GitHub's 21 [status API](http://developer.github.com/v3/repos/statuses/) 22 with pending, success, failure, or error statuses. 23 24 The leeroy repository is maintained at 25 [github.com/jfrazelle/leeroy](https://github.com/jfrazelle/leeroy). 26 27 #### GordonTheTurtle IRC Bot 28 29 The GordonTheTurtle IRC Bot lives in the 30 [#docker-maintainers](https://botbot.me/freenode/docker-maintainers/) channel 31 on Freenode. He is built in Go and is based off the project at 32 [github.com/fabioxgn/go-bot](https://github.com/fabioxgn/go-bot). 33 34 His main command is `!rebuild`, which rebuilds a given Pull Request for a repository. 35 This command works by integrating with Leroy. He has a few other commands too, such 36 as `!gif` or `!godoc`, but we are always looking for more fun commands to add. 37 38 The gordon-bot repository is maintained at 39 [github.com/jfrazelle/gordon-bot](https://github.com/jfrazelle/gordon-bot) 40 41 ### NSQ 42 43 We use [NSQ](https://github.com/bitly/nsq) for various aspects of the project 44 infrastucture. 45 46 #### Hooks 47 48 The hooks project, 49 [github.com/crosbymichael/hooks](https://github.com/crosbymichael/hooks), 50 is a small Go application that manages web hooks from github, hub.docker.com, or 51 other third party services. 52 53 It can be used for listening to github webhooks & pushing them to a queue, 54 archiving hooks to rethinkdb for processing, and broadcasting hooks to various 55 jobs. 56 57 #### Docker Master Binaries 58 59 One of the things queued from the Hooks are the building of the Master 60 Binaries. This happens on every push to the master branch of Docker. The 61 repository for this is maintained at 62 [github.com/jfrazelle/docker-bb](https://github.com/jfrazelle/docker-bb). 63 64 #### Docker Master Docs 65 66 The master build of the docs gets queued from the Hooks as well. They are built 67 using [github.com/jfrazelle/nsqexec](https://github.com/jfrazelle/nsqexec). 68 69 #### Patch Parser Bot 70 71 The bot, also named GordonTheTurtle, that labels and comments on Pull Requests 72 listens on Hooks as well. He is capable of knowing if a Pull Request needs to 73 be signed, or gofmt'd, as well as rebased. The repository for this is maintained at 74 [github.com/jfrazelle/gh-patch-parser](https://github.com/jfrazelle/gh-patch-parser).