1
Fork 0
photoview/.github/workflows/tests.yml

113 lines
2.7 KiB
YAML
Raw Normal View History

name: Tests
2020-08-09 20:32:02 +02:00
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
test-api:
name: Test API
runs-on: ubuntu-latest
strategy:
2021-09-27 20:59:41 +02:00
fail-fast: false
matrix:
database: ['sqlite', 'mysql', 'postgres']
services:
mariadb:
image: mariadb:10.5
env:
MYSQL_DATABASE: photoview_test
MYSQL_USER: photoview
MYSQL_PASSWORD: photosecret
2021-04-23 21:00:11 +02:00
MYSQL_RANDOM_ROOT_PASSWORD: yes
options: >-
--health-cmd="mysqladmin ping"
--health-interval=10s
--health-timeout=5s
--health-retries=5
2021-04-23 21:14:11 +02:00
ports:
- 3306:3306
postgres:
2021-04-23 20:54:01 +02:00
image: postgres:13.2
env:
POSTGRES_USER: photoview
POSTGRES_PASSWORD: photosecret
POSTGRES_DB: photoview_test
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
2021-04-23 21:14:11 +02:00
ports:
- 5432:5432
2020-08-09 20:32:02 +02:00
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Checkout repo
uses: actions/checkout@v4
- name: Build test image
uses: docker/build-push-action@v6
with:
pull: true
push: false
load: true
target: api
tags: photoview/api
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Test
run: |
docker run --name test --network host \
-e PHOTOVIEW_DATABASE_DRIVER=${{ matrix.database }} \
-e PHOTOVIEW_MYSQL_URL='photoview:photosecret@tcp(localhost:3306)/photoview_test' \
-e PHOTOVIEW_POSTGRES_URL='postgres://photoview:photosecret@localhost:5432/photoview_test' \
-e PHOTOVIEW_SQLITE_PATH=/tmp/photoview.db \
photoview/api \
go test ./... -v -database -filesystem -p 1 -coverprofile=coverage.txt -covermode=atomic
docker cp test:/app/api/coverage.txt ./api/
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
flags: api-${{ matrix.database }}
2020-09-27 23:04:05 +02:00
test-ui:
name: Test UI
runs-on: ubuntu-latest
2020-09-27 23:04:05 +02:00
steps:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Checkout repo
uses: actions/checkout@v4
- name: Build test image
uses: docker/build-push-action@v6
with:
pull: true
push: false
load: true
target: ui
tags: photoview/ui
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Test
run: |
docker run --name test photoview/ui npm run test:ci
docker cp test:/app/ui/coverage ./ui/
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
flags: ui