This is a project to add application performance testing into your continuous delivery pipeline. We built this over a hackathon weekend and decided to release it to the public as open source.
The main web UI is provided by NGiNX for serving static content and routing requests to uwsgi as the process manager and application server to a Ruby on Rails web framework backed by PostgreSQL relational database and redis in-memory data store. Task workers are provided by resque which generally tend to interact with a Docker API. Performance tests are currently provided by vegeta
In order for you to test webhooks locally, you'll need a way for GitHub to reach your development application. We have found ngrok to be a simple solution. You will want to run ngrok oh your host and point it at the IP address of your Docker VM. Our docker-compose setup includes an NGiNX proxy accepting requests on port 80. You might invoke ngrok like so:
luser@lolcathost:~$ ngrok http $(docker-machine ip perfci):80
You will need to Register a new OAuth application to generate a new Client ID and Client Secret. You will use these to set environment variable for development or production deployments.
We currently rely on Docker Compose for
quickly standing up a development environment. We have provided a
docker-compose.yml
which should be driven by
environment variables. We have provided a sample set of environment variables
in a file, .env.example
. You should copy this to .env
and
modify according to your environment.
At minimum, you will need to set the following environment variables in your
.env
file specific to your environment based on the previous steps.
WEBHOOK_URL
GITHUB_ID
GITHUB_SECRET
At this point, you should be able to stand up a development stack with something like:
luser@lolcathost:~$ docker-compose up
You may periodically want to run migrations on your database with something like this:
luser@lolcathost:~$ docker exec perfci-999-99-service bundle exec rake db:migrate
This project is made available under the terms of the GNU Affero General Public License (AGPL).