Skip to content
# name: Qiita Plugin CI
on:
push:
branches: [ dev ]
pull_request:
jobs:
# derived from https://github.com/actions/example-services/blob/master/.github/workflows/postgres-service.yml
main:
runs-on: ubuntu-latest
services:
postgres:
# Docker Hub image
image: postgres:13.4
env:
POSTGRES_DB: postgres
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
COVER_PACKAGE: ${{ matrix.cover_package }}
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
# based on https://github.com/actions/example-services/blob/master/.github/workflows/postgres-service.yml#L44-L72
- 5432/tcp
steps:
# Downloads a copy of the code in your repository before running CI tests
- name: Check out repository code
uses: actions/checkout@v2
- name: Setup for conda
uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
python-version: 3.9
- name: Basic dependencies install
env:
COVER_PACKAGE: ${{ matrix.cover_package }}
shell: bash -l {0}
run: |
echo "Testing: " $COVER_PACKAGE
# we need to download qiita directly so we have "easy" access to
# all config files
wget https://github.com/biocore/qiita/archive/dev.zip
unzip dev.zip
# pull out the port so we can modify the configuration file easily
pgport=${{ job.services.postgres.ports[5432] }}
sed -i "s/PORT = 5432/PORT = $pgport/" qiita-dev/qiita_core/support_files/config_test.cfg
# PGPASSWORD is read by pg_restore, which is called by the build_db process.
export PGPASSWORD=postgres
# Setting up main qiita conda environment
conda config --add channels conda-forge
conda deactivate
conda create --quiet --yes -n qiita python=3.9 pip libgfortran numpy nginx cython redis
conda env list
conda activate qiita
pip install -U pip
pip install sphinx sphinx-bootstrap-theme nose-timer Click coverage
- name: Qiita install
shell: bash -l {0}
run: |
conda activate qiita
pip install qiita-dev/ --no-binary redbiom
mkdir ~/.qiita_plugins
- name: Install Qiita plugins
shell: bash -l {0}
run: |
conda create --quiet --yes -n qp-dbbact python=3.9 pip
conda activate qp-dbbact
conda install --quiet --yes -c bioconda -c biocore scikit-bio biom-format pandas wordcloud nose
export QIITA_SERVER_CERT=`pwd`/qiita-dev/qiita_core/support_files/server.crt
export QIITA_CONFIG_FP=`pwd`/qiita-dev/qiita_core/support_files/config_test_local.cfg
pip --quiet install -U pip
pip --quiet install .
pip --quiet install coveralls
configure_dbbact --env-script "source /home/runner/.profile; conda activate qp-dbbact" --server-cert $QIITA_SERVER_CERT
echo "Available Qiita plugins"
ls ~/.qiita_plugins/
- name: Starting Main Services
shell: bash -l {0}
run: |
conda activate qiita
export QIITA_SERVER_CERT=`pwd`/qiita-dev/qiita_core/support_files/server.crt
export QIITA_CONFIG_FP=`pwd`/qiita-dev/qiita_core/support_files/config_test_local.cfg
sed "s#/home/runner/work/qiita/qiita#${PWD}/qiita-dev/#g" `pwd`/qiita-dev/qiita_core/support_files/config_test.cfg > ${QIITA_CONFIG_FP}
export REDBIOM_HOST="http://localhost:7379"
echo "1. Setting up redis"
redis-server --daemonize yes --port 7777
echo "2. Setting up nginx"
mkdir -p ${CONDA_PREFIX}/var/run/nginx/
export NGINX_FILE=`pwd`/qiita-dev/qiita_pet/nginx_example.conf
export NGINX_FILE_NEW=`pwd`/qiita-dev/qiita_pet/nginx_example_local.conf
sed "s#/home/runner/work/qiita/qiita#${PWD}/qiita-dev/#g" ${NGINX_FILE} > ${NGINX_FILE_NEW}
nginx -c ${NGINX_FILE_NEW}
echo "3. Setting up qiita"
qiita-env make --no-load-ontologies
qiita plugins update
qiita-test-install
echo "4. Starting supervisord => multiple qiita instances"
supervisord -c ${PWD}/qiita-dev/qiita_pet/supervisor_example.conf
sleep 10
cat /tmp/supervisord.log
- name: Main tests
shell: bash -l {0}
env:
COVER_PACKAGE: ${{ matrix.cover_package }}
run: |
conda activate qp-dbbact
export QIITA_SERVER_CERT=`pwd`/qiita-dev/qiita_core/support_files/server.crt
export QIITA_CONFIG_FP=`pwd`/qiita-dev/qiita_core/support_files/config_test_local.cfg
export PYTHONWARNINGS="ignore:Certificate for localhost has no \`subjectAltName\`"
cat `pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt >> ${CONDA_PREFIX}/lib/python3.9/site-packages/certifi/cacert.pem
cat `pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt >> ${CONDA_PREFIX}/../qiita/lib/python3.9/site-packages/certifi/cacert.pem
find / -name "cacert.pem" 2> /dev/null
cat `pwd`/qiita-dev/qiita_core/support_files/ci_rootca.crt >> ${CONDA_PREFIX}/../../lib/python3.9/site-packages/certifi/cacert.pem
nosetests --with-doctest --with-coverage --cover-package=qp_dbbact
- uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: codecov.yml
lint:
runs-on: ubuntu-latest
steps:
- name: flake8
uses: actions/setup-python@v2
with:
python-version: 3.11
- name: install dependencies
run: python -m pip install --upgrade pip
- name: Check out repository code
uses: actions/checkout@v2
- name: lint
run: |
pip install -q flake8
flake8 qp_dbbact setup.py scripts