Add test workflow.
This commit is contained in:
56
.github/workflows/test.yaml
vendored
Normal file
56
.github/workflows/test.yaml
vendored
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
name: Test
|
||||||
|
|
||||||
|
on: [push, pull_request]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container: ubuntu:20.04
|
||||||
|
|
||||||
|
env:
|
||||||
|
DEBIAN_FRONTEND: noninteractive
|
||||||
|
DATABASE_URL: postgresql://danbooru:danbooru@postgres/danbooru
|
||||||
|
ARCHIVE_DATABASE_URL: postgresql://danbooru:danbooru@postgres/danbooru
|
||||||
|
DANBOORU_SECRET_KEY_BASE: 1234
|
||||||
|
DANBOORU_AWS_SQS_ENABLED: false
|
||||||
|
DANBOORU_TWITTER_API_KEY: ${{ secrets.DANBOORU_TWITTER_API_KEY }}
|
||||||
|
DANBOORU_TWITTER_API_SECRET: ${{ secrets.DANBOORU_TWITTER_API_SECRET }}
|
||||||
|
DANBOORU_PIXIV_LOGIN: ${{ secrets.DANBOORU_PIXIV_LOGIN }}
|
||||||
|
DANBOORU_PIXIV_PASSWORD: ${{ secrets.DANBOORU_PIXIV_PASSWORD }}
|
||||||
|
DANBOORU_NIJIE_LOGIN: ${{ secrets.DANBOORU_NIJIE_LOGIN }}
|
||||||
|
DANBOORU_NIJIE_PASSWORD: ${{ secrets.DANBOORU_NIJIE_PASSWORD }}
|
||||||
|
DANBOORU_NICO_SEIGA_LOGIN: ${{ secrets.DANBOORU_NICO_SEIGA_LOGIN }}
|
||||||
|
DANBOORU_NICO_SEIGA_PASSWORD: ${{ secrets.DANBOORU_NICO_SEIGA_PASSWORD }}
|
||||||
|
DANBOORU_TUMBLR_CONSUMER_KEY: ${{ secrets.DANBOORU_TUMBLR_CONSUMER_KEY }}
|
||||||
|
DANBOORU_DEVIANTART_CLIENT_ID: ${{ secrets.DANBOORU_DEVIANTART_CLIENT_ID }}
|
||||||
|
DANBOORU_DEVIANTART_CLIENT_SECRET: ${{ secrets.DANBOORU_DEVIANTART_CLIENT_SECRET }}
|
||||||
|
DANBOORU_RAKISMET_KEY: ${{ secrets.DANBOORU_RAKISMET_KEY }}
|
||||||
|
DANBOORU_RAKISMET_URL: ${{ secrets.DANBOORU_RAKISMET_URL }}
|
||||||
|
DANBOORU_IP_REGISTRY_API_KEY: ${{ secrets.DANBOORU_IP_REGISTRY_API_KEY }}
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: evazion/postgres
|
||||||
|
env:
|
||||||
|
POSTGRES_USER: danbooru
|
||||||
|
POSTGRES_PASSWORD: danbooru
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out code
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
# - name: Save environment
|
||||||
|
# run: env | egrep "DANBOORU|DATABASE_URL" > ~/.env
|
||||||
|
# - name: Install docker-compose
|
||||||
|
# run: sudo apt-get update && sudo apt-get -y install docker-compose
|
||||||
|
# - name: Run tests
|
||||||
|
# run: docker-compose --env-file ~/.env -f config/docker/docker-compose.test.yaml -p danbooru up
|
||||||
|
- name: Install OS dependencies
|
||||||
|
run: apt-get update && apt-get -y install build-essential ruby ruby-dev ruby-bundler git nodejs yarnpkg webpack ffmpeg mkvtoolnix libvips-dev libxml2-dev postgresql-server-dev-all && ln -sf /usr/bin/yarnpkg /usr/bin/yarn
|
||||||
|
- name: Install Ruby dependencies
|
||||||
|
run: BUNDLE_DEPLOYMENT=true bundle install --jobs 4
|
||||||
|
- name: Install Javascript dependencies
|
||||||
|
run: yarn install
|
||||||
|
- name: Prepare database
|
||||||
|
run: config/docker/prepare-tests.sh
|
||||||
|
- name: Run tests
|
||||||
|
run: bin/rails test
|
||||||
@@ -30,7 +30,7 @@ COPY . .
|
|||||||
ARG DATABASE_URL=postgresql://0.0.0.0
|
ARG DATABASE_URL=postgresql://0.0.0.0
|
||||||
ARG DANBOORU_SECRET_KEY_BASE=1234
|
ARG DANBOORU_SECRET_KEY_BASE=1234
|
||||||
ARG RAILS_ENV=production
|
ARG RAILS_ENV=production
|
||||||
RUN bin/rails assets:precompile && ln -sf public/packs public/packs-test
|
RUN bin/rails assets:precompile && ln -sf packs public/packs-test
|
||||||
RUN rm -rf node_modules log tmp && mkdir log tmp
|
RUN rm -rf node_modules log tmp && mkdir log tmp
|
||||||
|
|
||||||
FROM ubuntu:20.04
|
FROM ubuntu:20.04
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
FROM postgres:latest
|
FROM postgres:12.3
|
||||||
|
|
||||||
RUN apt-get update && apt-get -y install build-essential git postgresql-server-dev-all
|
|
||||||
|
|
||||||
RUN rm -rf /test_parser
|
|
||||||
WORKDIR /test_parser
|
WORKDIR /test_parser
|
||||||
|
RUN apt-get update && apt-get -y install --no-install-recommends build-essential ca-certificates git postgresql-server-dev-all
|
||||||
RUN git clone https://github.com/r888888888/test_parser . && make install
|
RUN git clone https://github.com/r888888888/test_parser . && make install
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Usage: dotenv -f .env.test docker-compose -f config/docker/docker-compose-test.yaml -p danbooru up -d
|
# Usage: docker-compose --env-file .env.test -f config/docker/docker-compose-test.yaml -p danbooru run -T danbooru
|
||||||
#
|
#
|
||||||
# Docker Compose file used to create an instance of danbooru along with a test database to run the test suite.
|
# Docker Compose file to create an instance of danbooru along with a test database and run the test suite.
|
||||||
#
|
#
|
||||||
# https://docs.docker.com/compose/compose-file/
|
# https://docs.docker.com/compose/compose-file/
|
||||||
#
|
#
|
||||||
@@ -13,8 +13,8 @@ services:
|
|||||||
context: ../..
|
context: ../..
|
||||||
dockerfile: config/docker/Dockerfile.danbooru
|
dockerfile: config/docker/Dockerfile.danbooru
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgresql://danbooru:danbooru@localhost/danbooru
|
- DATABASE_URL=postgresql://danbooru:danbooru@postgres/danbooru
|
||||||
- ARCHIVE_DATABASE_URL=postgresql://danbooru:danbooru@localhost/danbooru
|
- ARCHIVE_DATABASE_URL=postgresql://danbooru:danbooru@postgres/danbooru
|
||||||
- DANBOORU_SECRET_KEY_BASE=1234
|
- DANBOORU_SECRET_KEY_BASE=1234
|
||||||
- DANBOORU_AWS_SQS_ENABLED
|
- DANBOORU_AWS_SQS_ENABLED
|
||||||
- DANBOORU_TWITTER_API_KEY
|
- DANBOORU_TWITTER_API_KEY
|
||||||
@@ -34,9 +34,11 @@ services:
|
|||||||
- DANBOORU_GOOGLE_MAPS_API_KEY
|
- DANBOORU_GOOGLE_MAPS_API_KEY
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
- postgres
|
||||||
command: /app/config/docker/run-tests.sh
|
user: root
|
||||||
|
entrypoint: ["bash", "-c", "apt-get -y install build-essential ruby-dev zlib1g-dev postgresql-server-dev-all git && config/docker/prepare-tests.sh && bin/rails test"]
|
||||||
postgres:
|
postgres:
|
||||||
build:
|
build:
|
||||||
|
context: .
|
||||||
dockerfile: Dockerfile.postgres
|
dockerfile: Dockerfile.postgres
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: danbooru
|
POSTGRES_USER: danbooru
|
||||||
@@ -2,25 +2,18 @@
|
|||||||
# Used as an entrypoint by the Docker image to prepare the test database before running the test suite.
|
# Used as an entrypoint by the Docker image to prepare the test database before running the test suite.
|
||||||
|
|
||||||
setup_database() {
|
setup_database() {
|
||||||
cd /app
|
|
||||||
RAILS_ENV=test bin/rails db:test:prepare
|
RAILS_ENV=test bin/rails db:test:prepare
|
||||||
}
|
}
|
||||||
|
|
||||||
# create the post_versions and pool_versions tables needed by the test suite.
|
# create the post_versions and pool_versions tables needed by the test suite.
|
||||||
setup_archives() {
|
setup_archives() {
|
||||||
mkdir /archives
|
mkdir ~/archives
|
||||||
cd /archives
|
cd ~/archives
|
||||||
git clone https://github.com/evazion/archives .
|
git clone https://github.com/evazion/archives .
|
||||||
gem install bundler -v 1.13.3
|
gem install bundler -v 1.13.3
|
||||||
bundle install --binstubs
|
bundle install --binstubs
|
||||||
RAILS_ENV=test bin/rake db:migrate
|
RAILS_ENV=test bin/rake db:migrate
|
||||||
}
|
}
|
||||||
|
|
||||||
run_tests() {
|
|
||||||
cd /app
|
|
||||||
bin/rails test
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_database
|
setup_database
|
||||||
setup_archives
|
setup_archives
|
||||||
run_tests
|
|
||||||
Reference in New Issue
Block a user