Tests: again full coverage #387
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: 'Tests' | |
on: | |
push: {} | |
workflow_call: {} | |
jobs: | |
build_openatlas: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create tags based on git data | |
id: meta | |
uses: docker/metadata-action@v4 | |
with: | |
images: | | |
ghcr.io/${{ github.repository }}/container-preview | |
tags: | | |
type=ref,event=branch | |
type=ref,event=pr | |
type=semver,pattern={{version}} | |
type=semver,pattern={{major}}.{{minor}} | |
type=raw,value=latest,enable={{is_default_branch}} | |
type=raw,value={{sha}} | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Build and push | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
file: install/Dockerfile | |
platforms: linux/amd64 | |
push: true | |
tags: ${{ steps.meta.outputs.tags }} | |
labels: ${{ steps.meta.outputs.labels }} | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
test_openatlas: | |
env: | |
POSTGRES_PASSWORD: verysecret | |
POSTGRES_DB: openatlas_test | |
POSTGRES_USER: openatlas | |
runs-on: ubuntu-latest | |
needs: [build_openatlas] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Login to GitHub Container Registry | |
uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Create openatlas network | |
run: | | |
docker network create --internal openatlas | |
- name: Create postgis container | |
run: | | |
docker run -d -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ | |
-e POSTGRES_DB=$POSTGRES_DB\ | |
-e POSTGRES_USER=$POSTGRES_USER\ | |
--name postgres --network openatlas\ | |
postgis/postgis:13-3.3 | |
- name: Wait | |
run: sleep 8 | |
# - name: Add extensions to db | |
# run: | | |
# docker exec -i postgres psql -U $POSTGRES_USER -d $POSTGRES_DB -c 'CREATE EXTENSION IF NOT EXISTS postgis; CREATE EXTENSION IF NOT EXISTS unaccent;' | |
- name: Initialize db | |
run: | | |
docker cp install/ postgres:/install/ | |
docker exec -i postgres /bin/bash -c "cd install && cat 0_extensions.sql 1_structure.sql 2_data_model.sql 3_data_web.sql 4_data_type.sql | psql -U $POSTGRES_USER -d $POSTGRES_DB -f -" | |
- name: Create openatlas container and run tests | |
run: | | |
COOKIE_KEY=$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c 32;echo;) | |
echo "COOKIE_KEY=$COOKIE_KEY" | |
docker create -e POSTGRES_PASSWORD=$POSTGRES_PASSWORD\ | |
-e POSTGRES_DB=$POSTGRES_DB\ | |
-e POSTGRES_USER=$POSTGRES_USER\ | |
-e POSTGRES_HOST=postgres\ | |
-e COOKIE_KEY=$COOKIE_KEY\ | |
--name openatlas --network openatlas\ | |
ghcr.io/$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')/container-preview:$(echo ${{ github.ref_name }} | sed 's/\//-/') | |
set -x | |
cat <<EOF > testing.py | |
SERVER_NAME='local.host' | |
DATABASE_NAME='openatlas_test' | |
DATABASE_USER='openatlas' | |
DATABASE_HOST='postgres' | |
DATABASE_PORT=5432 | |
DATABASE_PASS='verysecret' | |
MAIL_PASSWORD='asdQWEtzu123' | |
SECRET_KEY='$COOKIE_KEY' # Used for cookies | |
DEBUG = True | |
WTF_CSRF_ENABLED = False | |
WTF_CSRF_METHODS: list[str] = [] | |
ARCHE = { | |
'id': 0, | |
'url': 'https://arche-curation.acdh-dev.oeaw.ac.at/'} | |
IIIF = { | |
'enabled': True, | |
'path': '/var/www/iipsrv/', | |
'url': 'http://localhost:8080/iiif/', | |
'version': 2, | |
'conversion': True, | |
'compression': 'jpeg'} | |
EOF | |
# production.py is recreated on every start | |
sudo chown 33:33 testing.py | |
docker cp -a testing.py openatlas:/var/www/openatlas/instance/ | |
docker start openatlas | |
until [ "$(docker inspect -f {{.State.Running}} openatlas)"=="true" ]; do | |
sleep 0.1; | |
done; | |
docker exec -i openatlas /bin/bash -c "cd /var/www/openatlas/install/ && sed -i 's@http://localhost/iiif/@http://localhost:8080/iiif/@g' data_test.sql" | |
docker exec -i openatlas /bin/bash -c "cd /var/www/openatlas/instance/ && ls -la && cat testing.py && cat production.py" | |
- name: Run tests | |
run: | | |
docker exec -i openatlas /bin/bash -c "cd /var/www/openatlas/tests && nosetests3 -c .noserc --verbosity=2 --nologcapture --nocapture && echo passed" |