Skip to content

performanceci/performanceci-core

Repository files navigation

Stories in Ready

PerformanceCI

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.

Stack

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

Development

ngrok

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

GitHub OAuth

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.

Docker Compose

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

License

LICENCE

This project is made available under the terms of the GNU Affero General Public License (AGPL).