mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Instead of using Dockerfile for everything, we've introduced a docker-compose.yml file and kept the Dockerfile to producing a pure base image for the services defined. docker-compose services: - `mariadb` - Setup mariadb - `sharness` - Run sharness suites - `pytest-mysql` - Run pytest suites with MariaDB - `pytest-sqlite` - Run pytest suites with SQLite - `test` - Run all tests and produce a collective coverage report - This target mounts a cache volume and copies any successful coverage report back to `./cache/.coverage`. Users can run `./util/fix-coverage ./cache/.coverage` to rewrite source code paths and move coverage into place to view reports on your local system. == Get Started == Build `aurweb:latest`. $ docker build -t aurweb:latest . Run all tests via `docker-compose`. $ docker-compose up test You can also purely run `pytest` in SQLite or MariaDB modes. $ docker-compose up pytest-sqlite $ docker-compose up pytest-mysql Or `sharness` alone, which only uses SQLite internally. $ docker-compose up sharness After running tests, coverage reports are stored in `./cache/.coverage`. This database was most likely created in a different path, and so it needs to be sanitized with `./util/fix-coverage`. $ ./util/fix-coverage cache/.coverage Copied coverage db to /path/to/aurweb/.coverage. $ coverage report ... $ coverage html $ coverage xml ... Defined components: **Entrypoints** - mariadb-entrypoint.sh - setup mariadb and run its daemon - test-mysql-entrypoint.sh - setup mysql configurations - test-sqlite-entrypoint.sh - setup sqlite configurations - tests-entrypoint.sh - setup mysql and sqlite configurations **Scripts** - run-mariadb.sh - setup databases - run-pytests.sh - run pytest suites - run-sharness.sh - run sharness suites - run-tests.sh - run both pytests and sharness **Health** - mariadb.sh - A healthcheck script for the mariadb service - pytest.sh - A healthcheck script for the pytest-* services - sharness.sh - A healthcheck script for the sharness service This Docker configuration is setup for tests, but should be extendable for web and git servers. **Changes to Makefile** - Remove `.coverage` in the `clean` target - Add a `coverage` target which prints a report and outputs xml Signed-off-by: Kevin Morris <kevr@0cost.org>
88 lines
2.3 KiB
YAML
88 lines
2.3 KiB
YAML
#
|
|
# Docker service definitions for the aurweb project.
|
|
#
|
|
# Notable services:
|
|
# - `sharness` - Run sharness test suites
|
|
# - `pytest-mysql` - Run pytest suites with MariaDB
|
|
# - `pytest-sqlite` - Run pytest suites with SQLite
|
|
# - `test` - Run sharness, pytest-mysql and pytest-sqlite
|
|
# - `mariadb` - `port 13306` - MariaDB server for docker
|
|
#
|
|
# Copyright (C) 2021 aurweb Development
|
|
# All Rights Reserved.
|
|
version: "3.8"
|
|
|
|
services:
|
|
mariadb:
|
|
image: aurweb:latest
|
|
init: true
|
|
entrypoint: /docker/mariadb-entrypoint.sh
|
|
command: /docker/scripts/run-mariadb.sh mysqld_safe --datadir=/var/lib/mysql
|
|
ports:
|
|
# This will expose mariadbd on 127.0.0.1:13306 in the host.
|
|
# Ex: `mysql -uaur -paur -h 127.0.0.1 -P 13306 aurweb`
|
|
- "13306:3306"
|
|
volumes:
|
|
- mariadb_run:/var/run/mysqld # Bind socket in this volume.
|
|
- mariadb_data:/var/lib/mysql
|
|
healthcheck:
|
|
test: "bash /docker/health/mariadb.sh"
|
|
interval: 2s
|
|
timeout: 60s
|
|
|
|
sharness:
|
|
image: aurweb:latest
|
|
init: true
|
|
environment:
|
|
- AUR_CONFIG=conf/config.sqlite
|
|
entrypoint: /docker/test-sqlite-entrypoint.sh
|
|
command: /docker/scripts/run-sharness.sh
|
|
volumes:
|
|
- ./cache:/cache
|
|
|
|
pytest-mysql:
|
|
image: aurweb:latest
|
|
init: true
|
|
environment:
|
|
- AUR_CONFIG=conf/config
|
|
entrypoint: /docker/test-mysql-entrypoint.sh
|
|
command: /docker/scripts/run-pytests.sh clean
|
|
depends_on:
|
|
mariadb:
|
|
condition: service_healthy
|
|
links:
|
|
- mariadb
|
|
volumes:
|
|
- mariadb_run:/var/run/mysqld
|
|
- ./cache:/cache
|
|
|
|
pytest-sqlite:
|
|
image: aurweb:latest
|
|
init: true
|
|
environment:
|
|
- AUR_CONFIG=conf/config.sqlite
|
|
entrypoint: /docker/test-sqlite-entrypoint.sh
|
|
command: /docker/scripts/run-pytests.sh clean
|
|
volumes:
|
|
- mariadb_run:/var/run/mysqld
|
|
- ./cache:/cache
|
|
|
|
test:
|
|
image: aurweb:latest
|
|
init: true
|
|
environment:
|
|
- AUR_CONFIG=conf/config
|
|
entrypoint: /docker/tests-entrypoint.sh
|
|
command: /docker/scripts/run-tests.sh
|
|
depends_on:
|
|
mariadb:
|
|
condition: service_healthy
|
|
links:
|
|
- mariadb
|
|
volumes:
|
|
- mariadb_run:/var/run/mysqld
|
|
- ./cache:/cache
|
|
|
|
volumes:
|
|
mariadb_run: {} # Share /var/run/mysqld/mysqld.sock
|
|
mariadb_data: {} # Share /var/lib/mysql
|