diff --git a/.github/workflows/ci.yml b/.github/workflows/ci_main.yml similarity index 56% rename from .github/workflows/ci.yml rename to .github/workflows/ci_main.yml index ed4880c8..23551bba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci_main.yml @@ -10,7 +10,7 @@ on: required: false jobs: - ci: + ci_main: runs-on: ubuntu-20.04 services: @@ -48,9 +48,18 @@ jobs: - uses: actions/checkout@v2 - name: Set up Python 3.8 - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: 3.8 + cache: 'pip' + + - name: Cache dependencies + uses: actions/cache@v2 + with: + path: ~.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-pip- - name: Install Python dependencies run: | @@ -58,67 +67,75 @@ jobs: pip install -r requirements.txt python modules-requirements.py openimis.json > modules-requirements.txt pip install -r modules-requirements.txt - export MODULES=$(jq -r '(.modules[].name)' ../openimis.json | xargs) + export MODULES=$(jq -r '(.modules[].name)' openimis.json | xargs) echo $modules - name: Environment info run: | pip list - export DBBRANCH="$([ $GITHUB_REF == 'main' ] && echo "main" || echo "develop")" - - if [ ${GITHUB_REF##*/} = "develop" ]; then export DBBRANCH="main"; else export DBBRANCH="develop"; fi - echo "Branch ${GITHUB_REF##*/}, usign ${DBBRANCH} branch for database" - sudo apt-get update sudo apt-get install jq - name: Init PSQL run: | - git clone --depth 1 --branch $DBBRANCH https://github.com/openimis/database_postgresql.git ./sql_psql + export DB_NAME_TEST="test_$DB_NAME" + + if [ ${GITHUB_REF##*/} = "develop" ]; then export DBBRANCH="main"; else export DBBRANCH="develop"; fi + echo "Branch ${GITHUB_REF##*/}, usign ${DBBRANCH} branch for database" + git clone --depth=1 --branch=$DBBRANCH https://github.com/openimis/database_postgresql.git ./sql_psql echo 'set search_path to public' >> ~/.psqlrc - PGPASSWORD=GitHub999 psql -U postgres -h localhost -d imis -U postgres -f ./sql_psql/database\ scripts/00_dump.sql | grep . | uniq -c - PGPASSWORD=GitHub999 psql -U postgres -h localhost -d imis -U postgres -f ./sql_psql/database\ scripts/02_aux_functions.sql | grep . | uniq -c - PGPASSWORD=GitHub999 psql -U postgres -h localhost -d imis -U postgres -f ./sql_psql/database\ scripts/03_views.sql | grep . | uniq -c - PGPASSWORD=GitHub999 psql -U postgres -h localhost -d imis -U postgres -f ./sql_psql/database\ scripts/04_functions.sql | grep . | uniq -c - PGPASSWORD=GitHub999 psql -U postgres -h localhost -d imis -U postgres -f ./sql_psql/database\ scripts/05_stored_procs.sql | grep . | uniq -c - PGPASSWORD=GitHub999 psql -U postgres -h localhost -d imis -U postgres -f ./sql_psql/database\ scripts/demo_db.sql | grep . | uniq -c + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -c "DROP DATABASE IF EXISTS \"$DB_NAME_TEST\";" + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -c "CREATE DATABASE \"$DB_NAME_TEST\";" + + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -d $DB_NAME_TEST -f ./sql_psql/database\ scripts/00_dump.sql | grep . | uniq -c + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -d $DB_NAME_TEST -f ./sql_psql/database\ scripts/02_aux_functions.sql | grep . | uniq -c + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -d $DB_NAME_TEST -f ./sql_psql/database\ scripts/03_views.sql | grep . | uniq -c + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -d $DB_NAME_TEST -f ./sql_psql/database\ scripts/04_functions.sql | grep . | uniq -c + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -d $DB_NAME_TEST -f ./sql_psql/database\ scripts/05_stored_procs.sql | grep . | uniq -c + PGPASSWORD=GitHub999 psql -U $DB_USER -h $DB_HOST -d $DB_NAME_TEST -f ./sql_psql/database\ scripts/demo_db.sql | grep . | uniq -c + + env: + DB_HOST: localhost + DB_PORT: 5432 + DB_NAME: imis + DB_USER: postgres + DB_PASSWORD: GitHub999 - name: Initialize MSSQL run: | - git clone --depth 1 --branch $DBBRANCH https://github.com/openimis/database_ms_sqlserver.git ./sql_mssql - cd sql/ && bash concatenate_files.sh && cd .. + export DB_NAME_TEST="test_$DB_NAME" + + if [ ${GITHUB_REF##*/} = "develop" ]; then export DBBRANCH="main"; else export DBBRANCH="develop"; fi + echo "Branch ${GITHUB_REF##*/}, usign ${DBBRANCH} branch for database" + git clone --depth=1 --branch=$DBBRANCH https://github.com/openimis/database_ms_sqlserver.git ./sql_mssql + cd sql_mssql/ && bash concatenate_files.sh && cd .. curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - curl https://packages.microsoft.com/config/ubuntu/20.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list sudo apt-get update sudo apt-get install mssql-tools unixodbc-dev - /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P $SA_PASSWORD -Q 'DROP DATABASE IF EXISTS imis' - /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P $SA_PASSWORD -Q 'CREATE DATABASE imis' - /opt/mssql-tools/bin/sqlcmd -S localhost,1433 -U SA -P $SA_PASSWORD -d imis -i ./sql_mssql/output/fullDemoDatabase.sql | grep . | uniq -c - - python init_test_db.py | grep . | uniq -c - #We don't need to migrate the main database, `python manage.py test` migrates the test database + /opt/mssql-tools/bin/sqlcmd -S $DB_HOST -U $DB_USER -P $DB_PASSWORD -Q "DROP DATABASE IF EXISTS $DB_NAME_TEST" + /opt/mssql-tools/bin/sqlcmd -S $DB_HOST -U $DB_USER -P $DB_PASSWORD -Q "CREATE DATABASE $DB_NAME_TEST" + /opt/mssql-tools/bin/sqlcmd -S $DB_HOST -U $DB_USER -P $DB_PASSWORD -d $DB_NAME_TEST -i ./sql_mssql/output/fullDemoDatabase.sql | grep . | uniq -c env: - SECRET_KEY: secret - DEBUG: true - #DJANGO_SETTINGS_MODULE: hat.settings DB_HOST: localhost DB_PORT: 1433 DB_NAME: imis DB_USER: sa DB_PASSWORD: GitHub999 - #DEV_SERVER: true - SITE_ROOT: api - #REMOTE_USER_AUTHENTICATION: True - - name: Django tests PSQL + - name: Switch to backend run: | - python -V + python3 -V cd openIMIS - coverage run python manage.py test --keepdb $MODULES + + - name: Django tests PSQL + if: success() || failure() + run: | + coverage run python3 manage.py test --keepdb $MODULES coverage report env: SECRET_KEY: secret @@ -134,10 +151,9 @@ jobs: SITE_ROOT: api - name: Django tests MSSQL + if: success() || failure() run: | - python -V - cd openIMIS - coverage run manage.py test --keepdb $MODULES + coverage run python3 manage.py test --keepdb $MODULES coverage report env: SECRET_KEY: secret