Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for continuous integration via travis #5

Merged
merged 13 commits into from
Apr 17, 2017
47 changes: 47 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
language: c
sudo: false

branches:
only:
- master

install:
- source devtools/travis-ci/install.sh
- export PYTHONUNBUFFERED=true
# Add org channel
- conda config --add channels ${ORGNAME}

script:
# Create a test environment
- conda create --yes -n test python=$python
# Activate the test environment
- source activate test
# Add channels
- conda config --add channels conda-forge
- conda config --add channels omnia
- conda config --add channels https://conda.anaconda.org/omnia/label/dev
# Install extras for OpenEye and testing
- conda install --yes --quiet pip nose nose-timer
# Build the recipe
- conda build devtools/conda-recipe
# Install the package
- conda install --yes --use-local ${PACKAGENAME}-dev
# Test the package
#- cd devtools && nosetests $PACKAGENAME --nocapture --verbosity=2 --with-timer -a '!slow' && cd ..
- nosetests $PACKAGENAME --nocapture --verbosity=2 --with-timer
# Test the examples
- python benchmark/experiments/baoab_vs_vvvr.py

os:
- osx
- linux

env:
matrix:
- python=2.7 CONDA_PY=2.7
- python=3.5 CONDA_PY=3.5
- python=3.5 CONDA_PY=3.6

global:
- ORGNAME="omnia"
- PACKAGENAME="benchmark"
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
[![Build Status](https://travis-ci.org/choderalab/integrator-benchmark.svg?branch=master)](https://travis-ci.org/choderalab/integrator-benchmark?branch=master)

# integrator-benchmark

Enumerating and evaluating numerical integrators of Langevin dynamics
46 changes: 46 additions & 0 deletions devtools/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
Developer Notes / Tools
=======================

Assorted "Ho-To's" for developers

How to contribute changes
-------------------------
- Clone the repository if you have write access to the main repo, fork the repositiory if you are a collaborator.
- Make a new branch with `git checkout -b {your branch name}`
- Make changes and test your code
- Push the branch to the repo (either the main or your fork) with `git push -u origin {your branch name}`
* Note that `origin` is the default name assigned to the remote, yours may be different
- Make a PR on GitHub with your changes
- We'll review the changes and get your code into the repo after lively discussion!


Checklist for all Updates
-------------------------
- [ ] Update `setup.py` version number (see specific update type for details)
- [ ] Make sure there is an/are issue(s) opened for your specific update
- [ ] Create the PR, referencing the issue
- [ ] Debug the PR as needed until tests pass
- [ ] Tag the final, debugged version as the one in `setup.py`
* `git tag -a X.Y.Z [latest pushed commit] && git push --follow-tags`
- [ ] Get the PR merged in


Checklist for Major Revisions (`integrator-benchmark` X.Y+1.0)
--------------------------------------------------------------
- [ ] Make sure all issues related to the milestone will be closed by this commit or moved to future releases
- [ ] Update `docs/whatsnew.rst`
- [ ] Update `setup.py` with version number and `ISRELEASED` to `True`
- [ ] Do the steps for All Upates
- [ ] Create a new release on GitHub, reference the tag and copy the changes in `docs/whatsnew.rst`
- [ ] Update the `omnia-md/conda-recipies` repo by creating a new PR with updated versions
* Be sure to pin dependencies to fixed version

Checklist for Minor Revisions (`integrator-benchmark` X.Y.Z+1)
--------------------------------------------
- [ ] Update `setup.py` with the correct Z version number in X.Y.Z
- [ ] In `setup.py`, set `ISRELEASED` to `False`
- [ ] Do all the steps for All Updates
* If this is a critical bugfix (i.e. `integrator-benchmark` X.Y.0 is broken and/or flat out wrong without the fix):
- [ ] Update `docs/whatsnew.rst`
- [ ] Update the released version on the site to this version, adjusting the tag and note that this is a critical bugfix which corrects the X.Y release
- [ ] Update the `omnia-md/conda-recipies` repo to point at the corrected version
17 changes: 17 additions & 0 deletions devtools/conda-recipe/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
This is a recipe for building the current development package into a conda
binary.

The installation on travis-ci is done by building the conda package, installing
it, running the tests, and then if successful pushing the package to binstar
(and the docs to AWS S3). The binstar auth token is an encrypted environment
variable generated using:

binstar auth -n yank-travis -o omnia --max-age 22896000 -c --scopes api:write

and then saved in the environment variable BINSTAR_TOKEN.

You can set up travis to store an encrypted token via

gem install travis travis encrypt BINSTAR_TOKEN=xx

where xx is the token output by binstar. The final command should print a line (containing 'secure') for inclusion in your .travis.yml file.
13 changes: 13 additions & 0 deletions devtools/conda-recipe/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

#export CC=${PREFIX}/bin/gcc
#export CXX=${PREFIX}/bin/g++

# conda provides default values of these on Mac OS X,
# but we don't want them when building with gcc
#export CFLAGS=""
#export CXXFLAGS=""
#export LDFLAGS=""

# Build the python package
$PYTHON setup.py install
54 changes: 54 additions & 0 deletions devtools/conda-recipe/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package:
name: benchmark-dev
version: 0.0.0

source:
path: ../..

build:
preserve_egg_dir: True
number: 0

requirements:
build:
- python
- cython
- numpy
- scipy
- setuptools
- netcdf4
- openmm >=7.1
- mdtraj >=1.7.2
- openmmtools
- pymbar
- seaborn
- tqdm
- scikit-learn
- numba

run:
- python
- pandas
- numpy
- scipy
- cython
- netcdf4
- openmm >=7.1
- mdtraj >=1.7.2
- openmmtools
- pymbar
- seaborn
- tqdm
- scikit-learn
- numba

test:
requires:
- nose
- nose-timer
imports:
- benchmark

about:
home: https://github.com/choderalab/integrator-benchmark
license: MIT License
19 changes: 19 additions & 0 deletions devtools/travis-ci/install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Temporarily change directory to $HOME to install software
pushd .
cd $HOME

if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then MINICONDA=Miniconda3-latest-MacOSX-x86_64.sh; fi
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then MINICONDA=Miniconda3-latest-Linux-x86_64.sh; fi

MINICONDA_MD5=$(curl -s https://repo.continuum.io/miniconda/ | grep -A3 $MINICONDA | sed -n '4p' | sed -n 's/ *<td>\(.*\)<\/td> */\1/p')
wget https://repo.continuum.io/miniconda/$MINICONDA
bash $MINICONDA -b
rm -f $MINICONDA

export PATH=$HOME/miniconda3/bin:$PATH

conda update -yq conda
conda install -yq conda-build jinja2 anaconda-client pip

# Restore original directory
popd