From 5e63a7cf776370ce4730622806e44fe926ac00d8 Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 10 Jun 2020 02:07:15 -0500 Subject: [PATCH] Add test workflow. --- .github/workflows/test.yaml | 56 +++++++++++++++++++ config/docker/Dockerfile.danbooru | 2 +- config/docker/Dockerfile.postgres | 6 +- ...ose-test.yaml => docker-compose.test.yaml} | 12 ++-- .../docker/{run-tests.sh => prepare-tests.sh} | 11 +--- 5 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 .github/workflows/test.yaml rename config/docker/{docker-compose-test.yaml => docker-compose.test.yaml} (62%) rename config/docker/{run-tests.sh => prepare-tests.sh} (82%) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 000000000..4de8c06fb --- /dev/null +++ b/.github/workflows/test.yaml @@ -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 diff --git a/config/docker/Dockerfile.danbooru b/config/docker/Dockerfile.danbooru index 5dbef5ea0..df2af68bd 100644 --- a/config/docker/Dockerfile.danbooru +++ b/config/docker/Dockerfile.danbooru @@ -30,7 +30,7 @@ COPY . . ARG DATABASE_URL=postgresql://0.0.0.0 ARG DANBOORU_SECRET_KEY_BASE=1234 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 FROM ubuntu:20.04 diff --git a/config/docker/Dockerfile.postgres b/config/docker/Dockerfile.postgres index 4dfa1f9c7..9774e0a8a 100644 --- a/config/docker/Dockerfile.postgres +++ b/config/docker/Dockerfile.postgres @@ -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 +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 diff --git a/config/docker/docker-compose-test.yaml b/config/docker/docker-compose.test.yaml similarity index 62% rename from config/docker/docker-compose-test.yaml rename to config/docker/docker-compose.test.yaml index 0ebf4693a..1bab75922 100644 --- a/config/docker/docker-compose-test.yaml +++ b/config/docker/docker-compose.test.yaml @@ -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/ # @@ -13,8 +13,8 @@ services: context: ../.. dockerfile: config/docker/Dockerfile.danbooru environment: - - DATABASE_URL=postgresql://danbooru:danbooru@localhost/danbooru - - ARCHIVE_DATABASE_URL=postgresql://danbooru:danbooru@localhost/danbooru + - DATABASE_URL=postgresql://danbooru:danbooru@postgres/danbooru + - ARCHIVE_DATABASE_URL=postgresql://danbooru:danbooru@postgres/danbooru - DANBOORU_SECRET_KEY_BASE=1234 - DANBOORU_AWS_SQS_ENABLED - DANBOORU_TWITTER_API_KEY @@ -34,9 +34,11 @@ services: - DANBOORU_GOOGLE_MAPS_API_KEY depends_on: - 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: build: + context: . dockerfile: Dockerfile.postgres environment: POSTGRES_USER: danbooru diff --git a/config/docker/run-tests.sh b/config/docker/prepare-tests.sh similarity index 82% rename from config/docker/run-tests.sh rename to config/docker/prepare-tests.sh index 289afdc8c..4bb4f0522 100755 --- a/config/docker/run-tests.sh +++ b/config/docker/prepare-tests.sh @@ -2,25 +2,18 @@ # 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 + 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