]> BookStack Code Mirror - bookstack/blob - dev/docker/db-testing/run.sh
9898e52ec4aeb361cd64f30811500b9ceaeb9023
[bookstack] / dev / docker / db-testing / run.sh
1 #!/bin/bash
2
3 BRANCH=${1:-development}
4
5 # Build the container with a known name
6 docker build --build-arg BRANCH="$BRANCH" -t bookstack:db-testing .
7 if [ $? -eq 1 ]; then
8   echo "Failed to build app container for testing"
9   exit 1
10 fi
11
12 # List of database containers to test against
13 containers=(
14   "mysql:5.7"
15   "mysql:8.0"
16   "mysql:8.4"
17   "mysql:9.5"
18   "mariadb:10.2"
19   "mariadb:10.6"
20   "mariadb:10.11"
21   "mariadb:11.4"
22   "mariadb:11.8"
23   "mariadb:12.0"
24 )
25
26 # Pre-clean-up from prior runs
27 docker stop bs-dbtest-db
28 docker network rm bs-dbtest-net
29
30 # Cycle over each database image
31 for img in "${containers[@]}"; do
32   echo "Starting tests with $img..."
33   docker network create bs-dbtest-net
34   docker run -d --rm --name "bs-dbtest-db" \
35     -e MYSQL_DATABASE=bookstack-test \
36     -e MYSQL_USER=bookstack \
37     -e MYSQL_PASSWORD=bookstack \
38     -e MYSQL_ROOT_PASSWORD=password \
39           --network=bs-dbtest-net \
40     "$img"
41   sleep 20
42   APP_RUN='docker run -it --rm --network=bs-dbtest-net -e TEST_DATABASE_URL="mysql://bookstack:bookstack@bs-dbtest-db:3306" bookstack:db-testing'
43   $APP_RUN artisan migrate --force --database=mysql_testing
44   $APP_RUN artisan db:seed --force --class=DummyContentSeeder --database=mysql_testing
45   $APP_RUN vendor/bin/phpunit
46   if [ $? -eq 0 ]; then
47     echo "$img - Success"
48   else
49     echo "$img - Error"
50     read -p "Stop script? [y/N] " ans
51     [[ $ans == [yY] ]] && exit 0
52   fi
53
54   docker stop "bs-dbtest-db"
55   docker network rm bs-dbtest-net
56 done
57