Bountysource
If you want to make Bountysource.com better, you've come to the right place.
Bountysource needs your help!
Bountysource is run by volunteers, so development activity can be sporadic (to put it nicely).
"How can I help?"
...with money
- Contribute to our Bountysource Salt campaign
- Post bounties on Issues that matter to you
...with code
-
Start by reading our Wiki's How to Contribute
-
There are a number of high priority issues that would help the core team, such as:
-
Automatically collect e-signed Tax forms upon cash out request
-
"Add an issue tracker that your team manages" does not do anything
-
Looking for some easier tasks to get started?
Developer Resources
Local Development Environment (OS X)
# dependencies
brew install rbenv
brew install mysql
brew install postgresql
# checkout latest code
git clone git@github.com:bountysource/core.git bountysource-core
cd bountysource-core
# make sure you're running ruby 2.2.8 (if not, mess with rbenv)
ruby -v
# install Gemfile
gem install bundler
bundle install
# setup ENV
cp .env.dev .env
rake db:setup
# start server
./bin/rails s
open http://localhost:3000/
Hostnames for local development
We need different hostnames, so by default we use these:
- http://localhost:3000/ - bountysource
- http://127.0.0.1:3000/ - salt
- http://0.0.0.0:3000/ - api
Alternatively, you can add entries to /etc/hosts
and change the hostnames in your .env
file:
127.0.0.1 www.bountysource.local api.bountysource.local salt.bountysource.local
Running tests
RAILS_ENV=test rake db:create
./bin/rake
Local Development Environment with Docker (deprecated)
For self-hosting, you will need Docker and Docker Compose.
The following was tested on Ubuntu 16.04 LTS. It'll likely work very similar on other Linux distros.
First tip, don't bother with the Docker or Docker Compose packages that your distro provides (too old, superseded).
Simply install from upstream. To install Docker, do
curl -sSL https://get.docker.com | sh
To run Docker without superuser rights (sudo
):
sudo usermod -aG docker $USER
Then install Python virtualenv:
sudo apt-get install python-virtualenv
Create a new virtualenv and install Docker Compose into that:
virtualenv ~/docker-compose
source ~/docker-compose/bin/activate
pip install docker-compose
Here are the versions I get:
(cpy361_6) oberstet@thinkpad-t430s:~/scm/oberstet/bountysource_core$ docker --version
Docker version 17.05.0-ce, build 89658be
(cpy361_6) oberstet@thinkpad-t430s:~/scm/oberstet/bountysource_core$ docker-compose --version
docker-compose version 1.13.0, build 1719ceb
Now pull and build all required Docker images:
docker-compose -f docker-compose.yml build
Then start the Docker containers relevant for the service:
docker-compose -f docker-compose.yml up -d
This should start 3 Docker containers (Bountysource, PostgreSQL and Sphinx):
(cpy361_6) oberstet@thinkpad-t430s:~/scm/oberstet/bountysource_core$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
04599623589b bountysourcecore_bountysource "rails s" 11 minutes ago Up 11 minutes 0.0.0.0:3000->3000/tcp bountysource
27157a0c1ec0 leodido/sphinxsearch:2.2.9 "searchd.sh" 11 minutes ago Up 11 minutes 9306/tcp, 9312/tcp sphinx
45c0202dd08b postgres "docker-entrypoint..." 11 minutes ago Up 11 minutes 5432/tcp pgsql
Then open http://localhost:3000 in your browser.
You should see the Bountysource start page, something like this.
Running the unit tests
To run the unit tests:
docker-compose -f docker-compose.yml -f tasks.yml up test
You should see something like this in the end:
(cpy361_6) oberstet@thinkpad-t430s:~/scm/3rdparty/bountysource_core$ docker-compose -f docker-compose.yml -f tasks.yml up test
Starting pgsql ...
Starting pgsql ... done
Starting sphinx ...
Starting sphinx ... done
Starting bountysourcecore_test_1 ...
Starting bountysourcecore_test_1 ... done
Attaching to bountysourcecore_test_1
test_1 |
.. lots of output (snipped) ..
test_1 | Finished in 2 minutes 48.5 seconds (files took 7.23 seconds to load)
test_1 | 1239 examples, 0 failures, 13 pending
test_1 |
bountysourcecore_test_1 exited with code 0