Create scripts for testing locally

This commit is contained in:
zima 2024-12-21 12:48:49 -07:00
parent dd90724c54
commit 05f012aecd
3 changed files with 113 additions and 0 deletions

49
compose.local-test.yml Normal file
View file

@ -0,0 +1,49 @@
# このconfigは、 dockerでMisskey本体を起動せず、 redisとpostgresql などだけを起動します
services:
redis:
restart: always
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- ./redis:/data
healthcheck:
test: "redis-cli ping"
interval: 5s
retries: 20
postgres:
restart: always
image: postgres:15-alpine
ports:
- "5432:5432"
env_file:
- .config/docker.env
volumes:
- ./db:/var/lib/postgresql/data
healthcheck:
test: "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: 5s
retries: 20
web:
restart: always
image: node:iron
ports:
- 3000:3000
volumes:
- ./:/host
command: sleep infinity
# meilisearch:
# restart: always
# image: getmeili/meilisearch:v1.3.4
# environment:
# - MEILI_NO_ANALYTICS=true
# - MEILI_ENV=production
# env_file:
# - .config/meilisearch.env
# volumes:
# - ./meili_data:/meili_data

42
setup-tests.sh Executable file
View file

@ -0,0 +1,42 @@
#!/bin/bash
echo "This script will destroy the following local directories:"
echo " ./built"
echo " ./db"
echo " ./redis"
echo
echo "Do you want to continue? [Y/n]"
read -p "> " confirmation
case $confirmation in
[Yy]* )
echo "Continuing..."
;;
[Nn] )
echo "Exiting..."
exit 0
;;
esac
cp compose.local-test.yml compose.yml
echo Verifying containers are down...
docker compose down
docker compose rm
echo Removing any preexisting builds and databases.
echo This may take a few moments...
rm -rf ./built ./db ./redis
echo Creating environment
docker compose up -d
docker compose exec web apt-get update
docker compose exec web apt-get install -y bash
echo Building and running tests...
docker compose exec web /host/tests.sh
echo Cleaning up...
docker compose down
docker compose rm
rm -f compose.yml

22
tests.sh Executable file
View file

@ -0,0 +1,22 @@
#!/bin/bash
# Do not run this on your local machine. Instead, execute setup-tests.sh and it
# will automatically create, test, and tear down the testing environment.
set -e
cd /host/
echo Removing any preexisting builds and databases.
echo This may take a few moments...
rm -rf ./built ./db ./redis
apt-get update && apt-get install -y git wget curl build-essential python3 ffmpeg
cp .config/ci.yml .config/default.yml
cp .config/ci.yml .config/test.yml
corepack enable
corepack prepare pnpm@latest --activate
git submodule update --init
pnpm install --frozen-lockfile
pnpm run build
pnpm run migrate
pnpm run --filter='!megalodon' test
pnpm run --filter=backend --filter=misskey-js lint
pnpm run --filter=frontend --filter=frontend-embed eslint