Update docker test configuration.
This commit is contained in:
@@ -1,37 +0,0 @@
|
|||||||
version: 2
|
|
||||||
|
|
||||||
defaults: &defaults
|
|
||||||
working_directory: ~/app
|
|
||||||
docker:
|
|
||||||
- image: circleci/buildpack-deps:trusty
|
|
||||||
environment:
|
|
||||||
DOCKER_VERSION: 18.03.1-ce
|
|
||||||
DOCKER_COMPOSE_VERSION: 1.21.1
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
<<: *defaults
|
|
||||||
parallelism: 4
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- setup_remote_docker:
|
|
||||||
docker_layer_caching: true
|
|
||||||
- run:
|
|
||||||
name: Create .env.test file
|
|
||||||
command: env | egrep 'DEBUG|DANBOORU|RAILS|DATABASE_URL|SECRET' > .env.test
|
|
||||||
- run:
|
|
||||||
name: Build and Start Docker containers
|
|
||||||
command: |
|
|
||||||
docker-compose -f config/docker/compose.yml up -d web
|
|
||||||
- run:
|
|
||||||
name: Run database migrations
|
|
||||||
command: |
|
|
||||||
docker-compose -f config/docker/compose.yml exec archives dockerize -wait tcp://$PGHOST:$PGPORT bash -l -c 'cd /app ; bundle exec rake db:create ; bundle exec rake db:migrate'
|
|
||||||
docker-compose -f config/docker/compose.yml exec web dockerize -wait tcp://$PGHOST:$PGPORT bash -l -c 'cd /app ; bin/rake db:create ; bin/rake db:migrate'
|
|
||||||
- run:
|
|
||||||
name: Run tests
|
|
||||||
command: |
|
|
||||||
circleci tests glob test/**/*_test.rb | circleci tests split --split-by=timings | xargs -I{} docker-compose -f config/docker/compose.yml exec -T web bash -l -c 'cd /app ; bin/rails test --no-ci-clean {}'
|
|
||||||
docker cp docker_web_1:/app/test/reports /tmp
|
|
||||||
- store_test_results:
|
|
||||||
path: /tmp/reports
|
|
||||||
1
.dockerignore
Symbolic link
1
.dockerignore
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
.gitignore
|
||||||
19
.gitignore
vendored
19
.gitignore
vendored
@@ -1,16 +1,17 @@
|
|||||||
.env.*
|
.env.*
|
||||||
.bundle
|
.yarn-integrity
|
||||||
|
.gitconfig
|
||||||
|
.git/
|
||||||
|
.bundle/
|
||||||
config/database.yml
|
config/database.yml
|
||||||
config/danbooru_local_config.rb
|
config/danbooru_local_config.rb
|
||||||
config/deploy/*.rb
|
config/deploy/*.rb
|
||||||
config/newrelic.yml
|
config/newrelic.yml
|
||||||
|
coverage/
|
||||||
|
node_modules/
|
||||||
log/
|
log/
|
||||||
tmp/
|
tmp/
|
||||||
public/data
|
public/data/
|
||||||
coverage
|
public/packs-test/
|
||||||
.gitconfig
|
public/packs/
|
||||||
test/reports
|
test/reports/
|
||||||
public/packs-test
|
|
||||||
public/packs
|
|
||||||
node_modules
|
|
||||||
.yarn-integrity
|
|
||||||
|
|||||||
1
Dockerfile
Symbolic link
1
Dockerfile
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
config/docker/Dockerfile.danbooru
|
||||||
36
config/docker/Dockerfile.danbooru
Normal file
36
config/docker/Dockerfile.danbooru
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
FROM ubuntu:20.04
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# prevent apt-get from asking questions about our timezone or locale.
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
RUN \
|
||||||
|
apt-get update && \
|
||||||
|
apt-get -y install --no-install-recommends \
|
||||||
|
build-essential \
|
||||||
|
ruby \
|
||||||
|
ruby-dev \
|
||||||
|
git \
|
||||||
|
nodejs \
|
||||||
|
yarnpkg \
|
||||||
|
webpack \
|
||||||
|
ffmpeg \
|
||||||
|
mkvtoolnix \
|
||||||
|
libvips-dev \
|
||||||
|
libxml2-dev \
|
||||||
|
postgresql-client \
|
||||||
|
postgresql-server-dev-all
|
||||||
|
|
||||||
|
# webpacker expects the binary to be called `yarn`, but debian/ubuntu installs it as `yarnpkg`.
|
||||||
|
RUN ln -sf /usr/bin/yarnpkg /usr/bin/yarn
|
||||||
|
|
||||||
|
COPY Gemfile Gemfile.lock ./
|
||||||
|
RUN gem install bundler && bundle install
|
||||||
|
|
||||||
|
COPY package.json yarn.lock ./
|
||||||
|
RUN yarn install
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
CMD sleep 1d
|
||||||
7
config/docker/Dockerfile.postgres
Normal file
7
config/docker/Dockerfile.postgres
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
FROM postgres:latest
|
||||||
|
|
||||||
|
RUN apt-get update && apt-get -y install build-essential git postgresql-server-dev-all
|
||||||
|
|
||||||
|
RUN rm -rf /test_parser
|
||||||
|
WORKDIR /test_parser
|
||||||
|
RUN git clone https://github.com/r888888888/test_parser . && make install
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
services:
|
|
||||||
db:
|
|
||||||
image: r888888888/postgres
|
|
||||||
ports:
|
|
||||||
- "5432:5432"
|
|
||||||
environment:
|
|
||||||
- POSTGRES_PASSWORD
|
|
||||||
redis:
|
|
||||||
image: redis:latest
|
|
||||||
ports:
|
|
||||||
- "6379:6379"
|
|
||||||
archives:
|
|
||||||
image: r888888888/archives
|
|
||||||
command: sleep 1d
|
|
||||||
environment:
|
|
||||||
- POSTGRES_HOST
|
|
||||||
- POSTGRES_USER
|
|
||||||
- POSTGRES_PASSWORD
|
|
||||||
- RAILS_ENV
|
|
||||||
- AMAZON_KEY
|
|
||||||
- AMAZON_SQS_REGION
|
|
||||||
- AMAZON_SECRET
|
|
||||||
- SQS_ARCHIVES_URL
|
|
||||||
- RUN
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
web:
|
|
||||||
environment:
|
|
||||||
- SECRET_TOKEN
|
|
||||||
- SESSION_SECRET_KEY
|
|
||||||
- RAILS_ENV
|
|
||||||
- DATABASE_URL
|
|
||||||
- DEBUG
|
|
||||||
- ARCHIVE_DATABASE_URL
|
|
||||||
- DANBOORU_AWS_SQS_ARCHIVE_URL
|
|
||||||
- DANBOORU_PIXIV_LOGIN
|
|
||||||
- DANBOORU_PIXIV_PASSWORD
|
|
||||||
- DANBOORU_TWITTER_API_KEY
|
|
||||||
- DANBOORU_TWITTER_API_SECRET
|
|
||||||
- DANBOORU_AWS_ACCESS_KEY_ID
|
|
||||||
- DANBOORU_AWS_SECRET_ACCESS_KEY
|
|
||||||
- DANBOORU_AWS_SQS_REGION
|
|
||||||
- DANBOORU_NIJIE_LOGIN
|
|
||||||
- DANBOORU_NIJIE_PASSWORD
|
|
||||||
- DANBOORU_NICO_SEIGA_LOGIN
|
|
||||||
- DANBOORU_NICO_SEIGA_PASSWORD
|
|
||||||
- DANBOORU_PERSIST_PIXIV_SESSION
|
|
||||||
- DANBOORU_TUMBLR_CONSUMER_KEY
|
|
||||||
- CIRCLE_NODE_TOTAL
|
|
||||||
- CIRCLE_NODE_INDEX
|
|
||||||
- CIRCLE_BUILD_IMAGE
|
|
||||||
build:
|
|
||||||
context: ../..
|
|
||||||
dockerfile: config/docker/danbooru-ci
|
|
||||||
command: sleep 1d
|
|
||||||
ports:
|
|
||||||
- "3000:3000"
|
|
||||||
depends_on:
|
|
||||||
- db
|
|
||||||
- archives
|
|
||||||
- redis
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
FROM ruby:2.5.1-slim-stretch
|
|
||||||
|
|
||||||
ENV DOCKERIZE_VERSION v0.6.1
|
|
||||||
ENV VIPS_VERSION 8.7.0
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
apt-get -y install wget && \
|
|
||||||
wget -q https://github.com/jwilder/dockerize/releases/download/$DOCKERIZE_VERSION/dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
|
|
||||||
tar -C /usr/local/bin -xzvf dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
|
|
||||||
rm dockerize-linux-amd64-$DOCKERIZE_VERSION.tar.gz && \
|
|
||||||
apt-get -y install -qq curl gnupg apt-transport-https apt-utils build-essential automake libssl-dev libxml2-dev libxslt-dev ncurses-dev sudo libreadline-dev flex bison ragel memcached libmemcached-dev git libcurl4-openssl-dev sendmail-bin sendmail postgresql-client libpq-dev nginx ssh coreutils ffmpeg mkvtoolnix emacs24-nox telnet libgif-dev && \
|
|
||||||
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
|
|
||||||
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
|
|
||||||
curl -sSL https://deb.nodesource.com/setup_10.x | sudo -E bash - && \
|
|
||||||
apt-get update && \
|
|
||||||
apt-get -y install nodejs yarn && \
|
|
||||||
apt-get remove cmdtest && \
|
|
||||||
apt-get clean && \
|
|
||||||
cd /tmp && \
|
|
||||||
wget -q https://github.com/libvips/libvips/releases/download/v$VIPS_VERSION/vips-$VIPS_VERSION.tar.gz && \
|
|
||||||
tar xzf vips-$VIPS_VERSION.tar.gz && \
|
|
||||||
cd vips-$VIPS_VERSION && \
|
|
||||||
./configure --prefix=/usr && \
|
|
||||||
make install && \
|
|
||||||
ldconfig && \
|
|
||||||
cd /tmp && \
|
|
||||||
rm -rf vips-$VIPS_VERSION && \
|
|
||||||
useradd -ms /bin/bash danbooru -u 1000 && \
|
|
||||||
mkdir /app && \
|
|
||||||
mkdir -p /var/www/danbooru/shared/data && \
|
|
||||||
mkdir -p /var/www/danbooru/shared/data/preview && \
|
|
||||||
mkdir -p /var/www/danbooru/shared/data/crop && \
|
|
||||||
mkdir -p /var/www/danbooru/shared/data/sample
|
|
||||||
COPY . /app
|
|
||||||
RUN chown -R danbooru:danbooru /app && \
|
|
||||||
chown -R danbooru:danbooru /var/www/danbooru && \
|
|
||||||
mkdir /var/run/danbooru && \
|
|
||||||
chown danbooru:danbooru /var/run/danbooru
|
|
||||||
EXPOSE 3000
|
|
||||||
USER danbooru
|
|
||||||
RUN echo 'gem: --no-document' > ~/.gemrc && \
|
|
||||||
gem install bundler --quiet
|
|
||||||
WORKDIR /app
|
|
||||||
RUN bundle install
|
|
||||||
RUN yarn install
|
|
||||||
COPY script/install/database.yml.templ /app/config/database.yml
|
|
||||||
COPY script/install/danbooru_local_config.rb.templ /app/config/danbooru_local_config.rb
|
|
||||||
EXPOSE 3000
|
|
||||||
CMD sleep 1d
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
# This sets up a docker container suitable for use with Travis CI
|
|
||||||
|
|
||||||
FROM r888888888/danbooru-base
|
|
||||||
|
|
||||||
ENV PATH $PATH:/usr/local/bin
|
|
||||||
|
|
||||||
# Work around a bug in the ruby:2.5.1-slim-stretch base image. The base image
|
|
||||||
# sets BUNDLER_VERSION=1.16.4, which forces `bundle install` to use an outdated
|
|
||||||
# version even when we install a newer version. Remove this after updating the
|
|
||||||
# base image.
|
|
||||||
#
|
|
||||||
# https://discuss.circleci.com/t/using-bundler-2-0-during-ci-fails/27411
|
|
||||||
# https://github.com/bundler/bundler/issues/6782
|
|
||||||
# https://github.com/docker-library/ruby/issues/246
|
|
||||||
ENV BUNDLER_VERSION 2.0.2
|
|
||||||
|
|
||||||
USER root
|
|
||||||
COPY . /app
|
|
||||||
RUN chown -R danbooru:danbooru /app
|
|
||||||
|
|
||||||
# install circleci cli tools
|
|
||||||
RUN curl -q -o /usr/local/bin/circleci https://circle-downloads.s3.amazonaws.com/releases/build_agent_wrapper/circleci
|
|
||||||
RUN chmod +x /usr/local/bin/circleci
|
|
||||||
RUN sed -i'' -e 's/run -it/run -i/' /usr/local/bin/circleci
|
|
||||||
|
|
||||||
USER danbooru
|
|
||||||
RUN git reset --hard master
|
|
||||||
RUN git clean --force
|
|
||||||
RUN gem install bundler --version $BUNDLER_VERSION
|
|
||||||
RUN bundle install > /dev/null
|
|
||||||
43
config/docker/docker-compose-test.yaml
Normal file
43
config/docker/docker-compose-test.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#
|
||||||
|
# Usage: dotenv -f .env.test docker-compose -f config/docker/docker-compose-test.yaml -p danbooru up -d
|
||||||
|
#
|
||||||
|
# Docker Compose file used to create an instance of danbooru along with a test database to run the test suite.
|
||||||
|
#
|
||||||
|
# https://docs.docker.com/compose/compose-file/
|
||||||
|
#
|
||||||
|
|
||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
danbooru:
|
||||||
|
build:
|
||||||
|
context: ../..
|
||||||
|
dockerfile: config/docker/Dockerfile.danbooru
|
||||||
|
environment:
|
||||||
|
- DATABASE_URL=postgresql://danbooru:danbooru@localhost/danbooru
|
||||||
|
- ARCHIVE_DATABASE_URL=postgresql://danbooru:danbooru@localhost/danbooru
|
||||||
|
- DANBOORU_SECRET_KEY_BASE=1234
|
||||||
|
- DANBOORU_AWS_SQS_ENABLED
|
||||||
|
- DANBOORU_TWITTER_API_KEY
|
||||||
|
- DANBOORU_TWITTER_API_SECRET
|
||||||
|
- DANBOORU_PIXIV_LOGIN
|
||||||
|
- DANBOORU_PIXIV_PASSWORD
|
||||||
|
- DANBOORU_NIJIE_LOGIN
|
||||||
|
- DANBOORU_NIJIE_PASSWORD
|
||||||
|
- DANBOORU_NICO_SEIGA_LOGIN
|
||||||
|
- DANBOORU_NICO_SEIGA_PASSWORD
|
||||||
|
- DANBOORU_TUMBLR_CONSUMER_KEY
|
||||||
|
- DANBOORU_DEVIANTART_CLIENT_ID
|
||||||
|
- DANBOORU_DEVIANTART_CLIENT_SECRET
|
||||||
|
- DANBOORU_RAKISMET_KEY
|
||||||
|
- DANBOORU_RAKISMET_URL
|
||||||
|
- DANBOORU_IP_REGISTRY_API_KEY
|
||||||
|
- DANBOORU_GOOGLE_MAPS_API_KEY
|
||||||
|
depends_on:
|
||||||
|
- postgres
|
||||||
|
command: /app/config/docker/run-tests.sh
|
||||||
|
postgres:
|
||||||
|
build:
|
||||||
|
dockerfile: Dockerfile.postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: danbooru
|
||||||
|
POSTGRES_PASSWORD: danbooru
|
||||||
26
config/docker/run-tests.sh
Executable file
26
config/docker/run-tests.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/usr/bin/bash -eu
|
||||||
|
# Used as an entrypoint by the Docker image to prepare the test database before running the test suite.
|
||||||
|
|
||||||
|
setup_database() {
|
||||||
|
cd /app
|
||||||
|
RAILS_ENV=test bin/rails db:test:prepare
|
||||||
|
}
|
||||||
|
|
||||||
|
# create the post_versions and pool_versions tables needed by the test suite.
|
||||||
|
setup_archives() {
|
||||||
|
mkdir /archives
|
||||||
|
cd /archives
|
||||||
|
git clone https://github.com/evazion/archives .
|
||||||
|
gem install bundler -v 1.13.3
|
||||||
|
bundle install --binstubs
|
||||||
|
RAILS_ENV=test bin/rake db:migrate
|
||||||
|
}
|
||||||
|
|
||||||
|
run_tests() {
|
||||||
|
cd /app
|
||||||
|
bin/rails test
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_database
|
||||||
|
setup_archives
|
||||||
|
run_tests
|
||||||
Reference in New Issue
Block a user