Skip to content

UDF - CRUD + schema preview #4819

UDF - CRUD + schema preview

UDF - CRUD + schema preview #4819

Workflow file for this run

name: ci-checks
# run on all pull requests and on select branch pushes
on:
pull_request:
push:
branches:
- main
- next
jobs:
backend:
name: backend
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:12-alpine
env:
POSTGRES_USER: hawc
POSTGRES_PASSWORD: password
POSTGRES_DB: hawc
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
ports:
- 5432:5432
redis:
image: redis:6-alpine
options: --health-cmd "redis-cli ping" --health-interval 10s --health-timeout 5s --health-retries 5
ports:
- 6379:6379
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.11'
architecture: 'x64'
- name: try to restore pip cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/*.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: install
run: |
mv tests/data/ci-webpack-stats.json hawc/webpack-stats.json
pip install -U pip wheel
pip install -r requirements/dev.txt
- name: lint
run: |
make lint-py
- name: Setup linux environment
if: startsWith(runner.os, 'Linux')
run: |
sudo apt-get update -y
sudo apt-get install -y make libgslcblas0 libgsl-dev
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib"
sudo cp vendor/libnlopt.so /usr/local/lib/libnlopt.so.0
sudo ln -s /lib/x86_64-linux-gnu/libgsl.so /usr/local/lib/libgsl.so.25
export SITE_PKG=`python -c "import sysconfig; print(sysconfig.get_path('purelib'))"`
export "BMD_DLL=$SITE_PKG/bmds/bin/BMDS330/libDRBMD.so"
echo $BMD_DLL
ldd $BMD_DLL
- name: test
env:
DJANGO_DB_NAME: hawc
DJANGO_DB_USER: hawc
DJANGO_DB_PW: password
DJANGO_DB_HOST: localhost
DJANGO_CACHE_LOCATION: redis://localhost:6379/0
PUBMED_API_KEY: ${{ secrets.PUBMED_API_KEY }}
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
export "LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib"
fi
coverage run -m pytest --vcr-record=none
coverage html -d coverage_report
echo "# Python coverage report" >> $GITHUB_STEP_SUMMARY
coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
- name: loc
run: |
sudo apt-get install -y cloc
echo "# Lines of code report" >> $GITHUB_STEP_SUMMARY
make loc >> $GITHUB_STEP_SUMMARY
- name: upload-coverage-report
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: coverage_report
frontend:
name: frontend
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: '18.x'
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"
- name: try to restore yarn cache
uses: actions/cache@v3
id: yarn-cache
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('frontend/package.json') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: install
run: |
yarn --cwd ./frontend install
- name: lint
run: |
make lint-js
- name: test
run: |
npm --prefix ./frontend run test
- name: build for integration tests
run: |
npm --prefix ./frontend run build
- name: Upload webpack build
uses: actions/upload-artifact@v3
with:
name: webpack-build
path: |
hawc/webpack-stats.json
hawc/static/bundles/
integration:
name: integration
needs: [backend, frontend]
runs-on: ubuntu-22.04
services:
postgres:
image: postgres:12-alpine
env:
POSTGRES_USER: hawc
POSTGRES_PASSWORD: password
POSTGRES_DB: hawc
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
ports:
- 5432:5432
env:
DJANGO_DB_HOST: localhost
DJANGO_DB_NAME: hawc
DJANGO_DB_PW: password
DJANGO_DB_USER: hawc
INTEGRATION_TESTS: 1
LIVESERVER_HOST: localhost
LIVESERVER_PORT: 8000
PUBMED_API_KEY: ${{ secrets.PUBMED_API_KEY }}
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v3
with:
python-version: '3.11'
architecture: 'x64'
- name: try to restore pip cache
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements/*.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Download webpack build
uses: actions/download-artifact@v3
with:
name: webpack-build
path: hawc
- name: install hawc
run: |
pip install -U pip
pip install -r requirements/dev.txt
playwright install --with-deps chromium
# https://github.community/t/how-to-retry-a-failed-step-in-github-actions-workflow/125880
- name: run integration tests
id: test
continue-on-error: true
run: |
py.test -sv tests/integration/
- name: run integration tests (retry)
if: steps.test.outcome=='failure'
id: retry
continue-on-error: true
run: |
py.test -sv --lf tests/integration/
- name: set status
if: always()
run: |
if ${{ steps.test.outcome=='success' || steps.retry.outcome=='success' }}; then
echo success!
else
exit 1
fi