Less places with ruby versions (#2)

* Reduce number of places where Ruby versions are specified

* Add TravisCI config

* Let's see which Ruby the app user uses

* Set Ruby version as app user

* Use full path for calling rvm

* Same but different

* Use rvm Ruby throughout

* Try setting up Postgres on TravisCI

* Remove passenger_ruby nginx directive

It should be the default... maybe...

* fixup! Try setting up Postgres on TravisCI

* Use Docker Compose

* Don't wait 10 seconds

* Try multiple times before drawing conclusions

* Explicitly set a password for postgres

* Try pruning volumes

* Also retry db setup if request failed

* Do we actually need to build before up?

* Move empty lines around

* Turns out, no sudo needed
This commit is contained in:
Helge Rausch
2018-01-07 19:41:17 +01:00
committed by Bastian Greshake Tzovaras
parent 984b494dcd
commit 3cc18990b8
7 changed files with 121 additions and 6 deletions

4
.travis.yml Normal file
View File

@@ -0,0 +1,4 @@
services:
- docker
script:
- test/run

View File

@@ -1,4 +1,4 @@
FROM phusion/passenger-ruby24:0.9.27
FROM phusion/passenger-customizable:0.9.27
ENV RAILS_ENV production
@@ -6,7 +6,7 @@ RUN apt-get -q update
RUN apt-get -qy -o Dpkg::Options::="--force-confold" upgrade
RUN echo 'postfix postfix/mailname string opensnp.org' | debconf-set-selections
RUN echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections
RUN apt-get install -qy libhiredis-dev postgresql-client-9.5 postfix imagemagick tzdata
RUN apt-get install -qy libhiredis-dev postgresql-client-9.5 postfix imagemagick tzdata libpq-dev
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN postconf -e myhostname=opensnp.org
@@ -30,12 +30,16 @@ RUN git rev-parse HEAD > REVISION
RUN rm -rf .git
RUN chown app:app -R /home/app
RUN /usr/local/rvm/bin/rvm install $(cat .ruby-version)
RUN /usr/local/rvm/bin/rvm alias create default $(cat .ruby-version)
USER app
ADD database.yml config/database.yml
RUN bundle install --deployment --without test development
RUN bash -l -c 'gem install bundler'
RUN bash -l -c 'bundle install --jobs=4 --deployment --without test development'
RUN cp .env.development .env
RUN bundle exec rake assets:precompile
RUN bash -l -c 'bundle exec rake assets:precompile'
RUN rm .env
USER root

36
docker-compose.yml Normal file
View File

@@ -0,0 +1,36 @@
version: '3'
services:
rails:
build: '.'
ports:
- '8080:80'
volumes:
- './test/ssl:/etc/ssl'
environment:
POSTGRES_URL: 'postgres://postgres@postgres/opensnp'
REDIS_URL: 'redis://redis'
SECRET_KEY_BASE: foo
SECRET_TOKEN: bar
PLOS_API_KEY: foo
RECAPTCHA_SECRET_KEY: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe
RECAPTCHA_SITE_KEY: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
MENDELEY_CONSUMER_KEY: foo
ERRBIT_API_KEY: foo
ERRBIT_HOST: localhost
OH_CLIENT_ID: foo
OH_CLIENT_SECRET: bar
SENTRY_DSN: foo
SENTRY_RELEASE_WEBHOOK: http://example.com/
SURVEY_EMAIL_USER: foobar
SURVEY_EMAIL_PASSWORD: foobar
SURVEY_EMAIL_ADDRESS: foobar
SURVEY_EMAIL_PORT: foobar
postgres:
image: 'postgres:9.3'
volumes:
- './postgres-data:/var/lib/postgresql/data'
redis:
image: 'redis:2.8'

View File

@@ -5,7 +5,6 @@ server {
root /home/app/snpr/public;
passenger_enabled on;
passenger_user app;
passenger_ruby /usr/bin/ruby2.4;
}
server {
@@ -26,7 +25,6 @@ server {
root /home/app/snpr/public;
passenger_enabled on;
passenger_user app;
passenger_ruby /usr/bin/ruby2.4;
passenger_max_request_queue_size 200;
}

24
test/run Executable file
View File

@@ -0,0 +1,24 @@
#!/usr/bin/env bash
POSTGRES_DATA_DIR=test/postgres-data
set -x
mkdir $POSTGRES_DATA_DIR
docker-compose up -d
i=10
while
docker exec -ti opensnporgdocker_rails_1 bash -l -c 'bundle exec rake db:reset'
curl -sf "http://localhost:8080/" > /dev/null
status=$?
[ $status -ne 0 -a $i -gt 0 ]
do
sleep 1
i=$((i-1))
done
docker-compose rm -sfv
rm -rf $POSTGRES_DATA_DIR
exit $status

View File

@@ -0,0 +1,21 @@
-----BEGIN CERTIFICATE-----
MIIDjDCCAnSgAwIBAgIJAMrtCf/PudBdMA0GCSqGSIb3DQEBCwUAMFsxCzAJBgNV
BAYTAlhYMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRlcm5ldCBX
aWRnaXRzIFB0eSBMdGQxFDASBgNVBAMMC29wZW5zbnAub3JnMB4XDTE4MDEwNjE3
MjA0N1oXDTI4MDEwNDE3MjA0N1owWzELMAkGA1UEBhMCWFgxEzARBgNVBAgMClNv
bWUtU3RhdGUxITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDEUMBIG
A1UEAwwLb3BlbnNucC5vcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
AQC9dOqU16qgzzEezKG1I89nWQELWZIQU5wOa/T+T8EFdvMnEKEgz58OD+HVGR0b
2vxQXhDYf/xH7AVqm029MjNUUE1DzaEyU1yTuCoXlaDhfUvuCjNvMTe64cRl/s2j
XzkgoczfbDDcyXwLmDmbFU3IZS0IP66hHH9mnciQxZKsO9cHsXeCXQSoK5h02MXr
Gd8WmPyDUOGVpBZfrzyooOcPfRDvTW0jZgQk5HM0BCQ7ZfqwpOJLg2mkWo7HqoVF
Lxjsz+1wA5lQys1cIct6bJ/5+CZXWpLnH+7f2vkz+epe8qqa5Um4kbBl522AW8ZM
Bfpg3vLySC59R2UzI70TsKapAgMBAAGjUzBRMB0GA1UdDgQWBBTW0tGjtYFb7Rrp
fEoyIKQqRLAqQzAfBgNVHSMEGDAWgBTW0tGjtYFb7RrpfEoyIKQqRLAqQzAPBgNV
HRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQCcy1FfrQcoxUMFFWfyGvay
/Ull4lmjfg5T/eMov4a+MZ0Dzvy5fDZ/HNCmTTuKz/cNyfGx9i1M3qSjjOVfDd76
CVCxfe5ZStnDLs4JytWLRmd4Dc2iEZhE6bcDoEGCcsmOxqaWF1nwOsOHr4tXUsV8
NWf/n3SNrQ1Ngwjt8eP2CnwP9vIAIgTnM6OHRT39ocNYRjdIX4eEPnk0s/DZFldB
9LtanYpijihDWtw8j5/0wME/ttR7zksywOH3V+iEiPcHbgo9AEm42VLoaYr3y7ar
67d3i2y9yZ5qd7ZIu0ebTIWUR3RJ5OTkezhsid9zeHApi9EvI4/O8PtWrY3AoM80
-----END CERTIFICATE-----

View File

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC9dOqU16qgzzEe
zKG1I89nWQELWZIQU5wOa/T+T8EFdvMnEKEgz58OD+HVGR0b2vxQXhDYf/xH7AVq
m029MjNUUE1DzaEyU1yTuCoXlaDhfUvuCjNvMTe64cRl/s2jXzkgoczfbDDcyXwL
mDmbFU3IZS0IP66hHH9mnciQxZKsO9cHsXeCXQSoK5h02MXrGd8WmPyDUOGVpBZf
rzyooOcPfRDvTW0jZgQk5HM0BCQ7ZfqwpOJLg2mkWo7HqoVFLxjsz+1wA5lQys1c
Ict6bJ/5+CZXWpLnH+7f2vkz+epe8qqa5Um4kbBl522AW8ZMBfpg3vLySC59R2Uz
I70TsKapAgMBAAECggEAZxoGQwPu3l6C28D+y4X2a8aa8+NFws7NYWfMxsz+PQwT
nRHGrgVvCIcKHh7xoWQV5WKbhkZ4M2e1NuPXdXupRVwCAEEaVTnaaqVRes455Bx8
wskYXo2JR5FvgRYeMKc0fpau2HOXT7/yWpj32HbKgqDU1eVaEmFgz6ZULLzoagOh
OBkBiVaM6yR0k4JQAfSdiL/f/GRDthn5M5C7aeyHFAuwMahsD4dSZ/6wGDoLiwGH
SuO1qwqDHyK/PE3CbrChYvzHtPh8Rq7SsiwwsumDpuZ1Ek21HyvpI3GkIenqJh60
wVH51ca5ZcT5yWYPOOy4+6jY+mhowjK4Lmp12UqDBQKBgQD4i0umkkvi3k3NaMLE
634srjhwxLTp4Ybnbrr+pPBQqusvV1VxfkcweWeKDJvmtOLpFUcdh2eObQcVJKQI
Qem7eu5wlQKwCZAuhkfm+mXA1n4YBtK01JTAfMeIeLuXFDGE4cpsnIJjPSusm22U
2uIFvxCskD0pB0AiD1VsVOXrgwKBgQDDI9tMsIcIz8c+AGpcs5NJvnr4OsGqS158
W7YnTH7m6RU02tc/H/XZQIPSi00Urss7uU4o69DRO/MYQPmmIbvJGhCrl7WVo9vw
769r/VDOpAoaMhrs43TViyUD0SvvY8GUNIfsdwV3Z5vzjaBuME2GBI2tJ4anAoLK
klV5NXuxYwKBgCafPro7sZ8nfF+XD+0ZyxmWWR7s8lAFw7ji9Bvt9YoThUhuAdEJ
Fnbp5rUFEJThNwGRVOO5ztXLC3a1oufFllST3cmQ3kIMumMAatvxvS4iJqYFKWkA
P71JppgGauAnOyqzC4mlKH3TW54O6RBgkw7hie3G3Dor7kNcrqGO78uRAoGAViiW
wx2OAY374pw8WgHPnlfD46XNrGrqpO25V1CnFz0CZ/vX3b82xV1+1o860U773LrM
j7TO1hMqGiNWFsv+JaSkh57MRe27Rn4NbhjCfPpgm4BT8xPamg59oVnRlDjvV4h6
GyXR/A57BOYbV4tsLygDhdhV05eAOAC0THgYzRECgYB+U1rfw9F6ekG5pJpkExhs
wORNJNPcNX7SaXRccUcy/qKYCDzo7jlJjb/PSsbd7kG3143bPnQY3ZkbADJbNOec
7AGYPcmK8WuG1fYlILzWaOd8cn5utEhWYXDTRAx5hQa8iAKBoapcn2O5KxA7isju
pyC/BsxZdvxDBV4dxlZoow==
-----END PRIVATE KEY-----