-
Notifications
You must be signed in to change notification settings - Fork 661
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adds basic GH Actions CI workflow (#3040)
Fixes #3036 ## Work done in this PR - Adds a continuous integration workflow based on github actions. - Disables previous continuous integration workflow based on TravisCI. - Fixes minor Visibledeprecation warnings with the hole2 tests.
- Loading branch information
Showing
4 changed files
with
284 additions
and
118 deletions.
There are no files selected for viewing
File renamed without changes.
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,281 @@ | ||
name: mda_gh_ci | ||
on: | ||
push: | ||
branches: | ||
- develop | ||
- master | ||
pull_request: | ||
branches: | ||
- develop | ||
- master | ||
|
||
defaults: | ||
run: | ||
shell: bash -l {0} | ||
|
||
env: | ||
MDA_CONDA_MIN_DEPS: "pip pytest mmtf-python biopython networkx cython matplotlib scipy griddataformats hypothesis gsd codecov" | ||
MDA_CONDA_EXTRA_DEPS: "seaborn>=0.7.0 clustalw=2.1 netcdf4 scikit-learn joblib>=0.12 chemfiles tqdm>=4.43.0 tidynamics>=1.0.0 rdkit>=2020.03.1 h5py==2.10.0" | ||
MDA_PIP_MIN_DEPS: 'coveralls coverage<5 pytest-cov pytest-xdist' | ||
MDA_PIP_EXTRA_DEPS: 'duecredit parmed' | ||
|
||
jobs: | ||
main_tests: | ||
if: "github.repository == 'MDAnalysis/mdanalysis'" | ||
runs-on: ${{ matrix.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
os: [ubuntu-latest, ] | ||
python-version: [3.6, 3.7, 3.8] | ||
run_type: [FULL, ] | ||
install_hole: [true, ] | ||
codecov: [true, ] | ||
include: | ||
- name: macOS | ||
os: macOS-latest | ||
python-version: 3.7 | ||
run_type: FULL | ||
install_hole: true | ||
codecov: true | ||
- name: minimal-ubuntu | ||
os: ubuntu-latest | ||
python-version: 3.6 | ||
run_type: MIN | ||
install_hole: false | ||
codecov: true | ||
- name: numpy_min | ||
os: ubuntu-latest | ||
python-version: 3.6 | ||
run_type: FULL | ||
install_hole: false | ||
codecov: false | ||
numpy: numpy=1.16.0 | ||
- name: asv_check | ||
os: ubuntu-latest | ||
python-version: 3.7 | ||
run_type: FULL | ||
install_hole: false | ||
codecov: false | ||
env: | ||
CYTHON_TRACE_NOGIL: 1 | ||
MPLBACKEND: agg | ||
GH_OS: ${{ matrix.os }} | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: setup_osx | ||
if: startsWith(matrix.os, 'macOS') | ||
run: | | ||
# Set OS specific vars and compiler flags | ||
echo "OS_NAME=osx" >> $GITHUB_ENV | ||
# TODO: work out why this is necessary (from CI helpers) | ||
echo "MACOSX_DEPLOYMENT_TARGET=10.9" >> $GITHUB_ENV | ||
ulimit -S -n 2048 | ||
clang -v | ||
echo "CC=clang" >> $GITHUB_ENV | ||
clang++ -v | ||
echo "CXX=clang++" >> $GITHUB_ENV | ||
gfortran-9 -v | ||
echo "FC=gfortran-9" >> $GITHUB_ENV | ||
- name: setup_linux | ||
if: startsWith(matrix.os, 'ubuntu') | ||
run: | | ||
# Set OS specific vars and compiler flags | ||
echo "OS_NAME=linux" >> $GITHUB_ENV | ||
gcc -v | ||
echo "CC=gcc" >> $GITHUB_ENV | ||
g++ -v | ||
echo "CXX=g++" >> $GITHUB_ENV | ||
gfortran -v | ||
echo "FC=gfortran" >> $GITHUB_ENV | ||
- name: setup_miniconda | ||
uses: conda-incubator/setup-miniconda@v2 | ||
with: | ||
python-version: ${{ matrix.python-version }} | ||
auto-update-conda: true | ||
channel-priority: flexible | ||
channels: biobuilds, conda-forge | ||
add-pip-as-python-dependency: true | ||
# TODO: mamba causes pip to segfault, switch when fixed | ||
#mamba-version: "*" | ||
architecture: x64 | ||
|
||
- name: install_deps | ||
env: | ||
MDA_CONDA_FULL_DEPS: "${{ env.MDA_CONDA_MIN_DEPS }} ${{ env.MDA_CONDA_EXTRA_DEPS }}" | ||
MDA_PIP_FULL_DEPS: "${{ env.MDA_PIP_MIN_DEPS }} ${{ env.MDA_PIP_EXTRA_DEPS }}" | ||
run: | | ||
# NOTE: vars need to be re-assigned | ||
# NOTE: set matrix.numpy to pin to a specific numpy version | ||
conda_deps="${{ matrix.numpy }} ${MDA_CONDA_${{ matrix.run_type }}_DEPS}" | ||
pip_deps=${MDA_PIP_${{ matrix.run_type }}_DEPS} | ||
conda install ${conda_deps} | ||
pip install ${pip_deps} | ||
# also install asv if required | ||
if [ ${{ matrix.name }} = "asv_check" ]; then | ||
pip install asv | ||
fi | ||
- name: check_setup | ||
run: | | ||
# Check OS and python setup | ||
echo "OS: ${OS_NAME}" | ||
which python | ||
which pip | ||
pip list | ||
conda info | ||
conda list | ||
- name: install_hole | ||
if : matrix.install_hole | ||
run: | | ||
# We manually build hole2 to avoid OS incompatibilities | ||
git clone https://github.com/MDAnalysis/hole2.git | ||
cd hole2/src | ||
source ../source.apache | ||
(make FC=${FC}) && (make PREFIX=${HOME}/hole2 FC=${FC} install) | ||
source ../source.unset | ||
echo "HOLE_BINDIR=${HOME}/hole2/bin" >> $GITHUB_ENV | ||
echo "${HOME}/hole2/bin" >> $GITHUB_PATH | ||
- name: install_mda | ||
run: | | ||
# TODO: using install instead of develop here causes coverage to drop | ||
# for .pyx file. If possible a solution for this should be found. | ||
(cd package/ && python setup.py develop) && (cd testsuite/ && python setup.py install) | ||
- name: run_tests | ||
if: contains(matrix.name, 'asv_check') != true | ||
run: | | ||
PYTEST_FLAGS="--disable-pytest-warnings --durations=50" | ||
if [ ${{ matrix.codecov }} = "true" ]; then | ||
PYTEST_FLAGS="${PYTEST_FLAGS} --cov=MDAnalysis --cov-report=xml" | ||
fi | ||
echo $PYTEST_FLAGS | ||
pytest -n 2 testsuite/MDAnalysisTests $PYTEST_FLAGS | ||
- name: run_asv | ||
if: contains(matrix.name, 'asv_check') | ||
run: | | ||
cd benchmarks | ||
time python -m asv check -E existing | ||
- name: codecov | ||
if: matrix.codecov | ||
uses: codecov/codecov-action@v1 | ||
with: | ||
file: coverage.xml | ||
fail_ci_if_error: True | ||
verbose: True | ||
|
||
|
||
build_docs: | ||
if: "github.repository == 'MDAnalysis/mdanalysis'" | ||
runs-on: ubuntu-latest | ||
env: | ||
CYTHON_TRACE_NOGIL: 1 | ||
MPLBACKEND: agg | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: setup_miniconda | ||
uses: conda-incubator/setup-miniconda@v2 | ||
with: | ||
python-version: 3.7 | ||
auto-update-conda: true | ||
channel-priority: flexible | ||
channels: biobuilds, conda-forge | ||
add-pip-as-python-dependency: true | ||
architecture: x64 | ||
|
||
- name: install_deps | ||
run: | | ||
conda_deps="${{ env.MDA_CONDA_MIN_DEPS }} ${{ env.MDA_CONDA_EXTRA_DEPS}}" | ||
pip_deps="${{ env.MDA_PIP_MIN_DEPS}} ${{ env.MDA_PIP_EXTRA_DEPS }} sphinx==1.8.5 sphinx-sitemap sphinx_rtd_theme msmb_theme==1.2.0" | ||
conda install ${conda_deps} | ||
pip install ${pip_deps} | ||
- name: install_mda | ||
run: | | ||
cd package && python setup.py develop | ||
- name: build_docs | ||
run: | | ||
cd package && python setup.py build_sphinx -E | ||
- name: deploy_docs | ||
if: github.event_name != 'pull_request' | ||
run: | | ||
# place the deploy call here | ||
echo "Oh, maple syrup roast parsnips [Richard Gowers]" | ||
pylint_check: | ||
if: "github.repository == 'MDAnalysis/mdanalysis'" | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: setup_miniconda | ||
uses: conda-incubator/setup-miniconda@v2 | ||
with: | ||
python-version: 3.7 | ||
auto-update-conda: true | ||
channel-priority: flexible | ||
channels: conda-forge | ||
add-pip-as-python-dependency: true | ||
mamba-version: "*" | ||
architecture: x64 | ||
|
||
- name: install | ||
run: | | ||
which pip | ||
which python | ||
pip install pylint | ||
- name: pylint | ||
env: | ||
PYLINTRC: package/.pylintrc | ||
run: | | ||
pylint --py3k package/MDAnalysis && pylint --py3k testsuite/MDAnalysisTests | ||
pypi_check: | ||
if: "github.repository == 'MDAnalysis/mdanalysis'" | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- uses: actions/checkout@v2 | ||
|
||
- name: setup_miniconda | ||
uses: conda-incubator/setup-miniconda@v2 | ||
with: | ||
python-version: 3.7 | ||
auto-update-conda: true | ||
channel-priority: flexible | ||
channels: conda-forge | ||
add-pip-as-python-dependency: true | ||
mamba-version: "*" | ||
architecture: x64 | ||
|
||
- name: install_conda | ||
run: | | ||
conda install setuptools cython numpy twine | ||
- name: install_mdanalysis | ||
run: | | ||
cd package && python setup.py sdist | ||
- name: check_package_build | ||
run: | | ||
DISTRIBUTION=$(ls -t1 package/dist/MDAnalysis-*.tar.gz | head -n 1) | ||
test -n "${DISTRIBUTION}" || { echo "no distribution package/dist/MDAnalysis-*.tar.gz found"; exit 1; } | ||
echo "twine check $DISTRIBUTION" | ||
twine check $DISTRIBUTION |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.