Tizen_4.0 base
[platform/upstream/docker-engine.git] / project / TOOLS.md
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.org/) 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](https://developer.github.com/v3/repos/hooks/) 
18 to listen for pull request notifications and starts jobs on your Jenkins 
19 server.  Using the Jenkins
20 [notification plugin](https://wiki.jenkins-ci.org/display/JENKINS/Notification+Plugin),
21 Leeroy updates the pull request using GitHub's 
22 [status API](https://developer.github.com/v3/repos/statuses/)
23 with pending, success, failure, or error statuses.
24
25 The leeroy repository is maintained at
26 [github.com/docker/leeroy](https://github.com/docker/leeroy).
27
28 #### GordonTheTurtle IRC Bot
29
30 The GordonTheTurtle IRC Bot lives in the
31 [#docker-maintainers](https://botbot.me/freenode/docker-maintainers/) channel
32 on Freenode. He is built in Go and is based off the project at
33 [github.com/fabioxgn/go-bot](https://github.com/fabioxgn/go-bot). 
34
35 His main command is `!rebuild`, which rebuilds a given Pull Request for a repository.
36 This command works by integrating with Leroy. He has a few other commands too, such 
37 as `!gif` or `!godoc`, but we are always looking for more fun commands to add.
38
39 The gordon-bot repository is maintained at
40 [github.com/docker/gordon-bot](https://github.com/docker/gordon-bot)
41
42 ### NSQ
43
44 We use [NSQ](https://github.com/bitly/nsq) for various aspects of the project
45 infrastructure.
46
47 #### Hooks
48
49 The hooks project,
50 [github.com/crosbymichael/hooks](https://github.com/crosbymichael/hooks),
51 is a small Go application that manages web hooks from github, hub.docker.com, or
52 other third party services.
53
54 It can be used for listening to github webhooks & pushing them to a queue,
55 archiving hooks to rethinkdb for processing, and broadcasting hooks to various
56 jobs.
57
58 #### Docker Master Binaries
59
60 One of the things queued from the Hooks are the building of the Master
61 Binaries. This happens on every push to the master branch of Docker. The
62 repository for this is maintained at
63 [github.com/docker/docker-bb](https://github.com/docker/docker-bb).