diff --git a/.travis.yml b/.travis.yml index 5b8d13f..7f3f6a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,17 @@ -language: C - +language: python +python: + - "2.7" install: - - CHANNEL=http://conda.lsst.codes/sims ./install.sh lsst-sims pandas nose + - travis_wait 30 ./continuous_integration/travis_install.sh lsst-sims - export PATH="$HOME/miniconda/bin:$PATH" - source eups-setups.sh - setup lsst_sims - pip install python-coveralls - pip install coveralls - pip install coverage -cache: - directories: - - $HOME/miniconda.tarball +#cache: +# directories: +# - $HOME/miniconda.tarball # A trivial example to show that this worked script: diff --git a/continuous_integration/cleanup.sh b/continuous_integration/cleanup.sh new file mode 100755 index 0000000..1cc7b73 --- /dev/null +++ b/continuous_integration/cleanup.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +source ./continuous_integration/setup_env.sh +# Minimize our on-disk footprint +conda clean -iltp --yes + +# +# Pack for caching. We pack here as Travis tends to time out if it can't pack +# the whole directory in ~180 seconds. +# +rm -rf "$CACHE_DIR" "$CACHE_DIR_TMP" + +mkdir "$CACHE_DIR_TMP" +tar czf "$CACHE_DIR_TMP/$CACHE_TARBALL_NAME" -C "${store_dir}" miniconda +mv "${store_dir}/info.txt" "$CACHE_DIR_TMP" + +mv "$CACHE_DIR_TMP" "$CACHE_DIR" # Atomic rename +ls -l "$CACHE_DIR" diff --git a/continuous_integration/conda_install_dep.sh b/continuous_integration/conda_install_dep.sh new file mode 100755 index 0000000..d91210e --- /dev/null +++ b/continuous_integration/conda_install_dep.sh @@ -0,0 +1,14 @@ +#!/usr/bin/env bash + +export PATH="${store_dir}/miniconda/bin:$PATH" +CHANNEL=${CHANNEL:-"http://conda.lsst.codes/sims"} # the URL to the conda channel where LSST conda packages reside +conda config --add channels "$CHANNEL" +CHANNEL=${CHANNEL:-"anaconda"} +conda config --add channels "$CHANNEL" +CHANNEL=${CHANNEL:-"openastronomy"} +conda config --add channels "$CHANNEL" +conda create --yes -n AnalyzeSN python +source activate AnalyzeSN +conda install -q --yes --file ./continuous_integration/requirements.txt +conda list --explicit > spec-file.txtconda list --explicit > ./continuous_integration/spec-file.txt; + diff --git a/continuous_integration/install_miniconda.sh b/continuous_integration/install_miniconda.sh new file mode 100755 index 0000000..3ab5fef --- /dev/null +++ b/continuous_integration/install_miniconda.sh @@ -0,0 +1,28 @@ +#!/bin/bash -xe +source ./continuous_integration/setup_env.sh +mkdir -p ${store_dir} + +# remove previous installation +rm -rf "${store_dir}/miniconda" +osname=`uname` +# Obtain the miniconda script from continuum for the OS +echo $osname +if [[ "$osname" == 'Linux' ]] +then + install_file="Miniconda2-$MINICONDA_VERSION-Linux-x86_64.sh" +elif [[ "$osname" == 'Darwin' ]] +then + install_file="Miniconda2-$MINICONDA_VERSION-MacOSX-x86_64.sh" +else + echo "Error with OS" 1>&2 + exit 64 +fi +# Download the miniconda script +curl -L -O "https://repo.continuum.io/miniconda/$install_file" +bash "$install_file" -b -p "${store_dir}/miniconda" +export PATH="${store_dir}/miniconda/bin:$PATH" +# +# Disable MKL. The lsst stack doesn't play nice with it (symbol collisions) +# +rm -f $install_file +conda install --yes nomkl diff --git a/continuous_integration/setup_env.sh b/continuous_integration/setup_env.sh new file mode 100644 index 0000000..6bf17e9 --- /dev/null +++ b/continuous_integration/setup_env.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env python +export store_dir=${HOME}/store +export MINICONDA_VERSION=${MINICONDA_VERSION:-"latest"} +export CACHE_DIR="${store_dir}/miniconda.tarball" +export CACHE_DIR_TMP="$CACHE_DIR.tmp" +export CACHE_TARBALL_NAME="miniconda.tar.gz" +export CACHE_TARBALL_PATH="$CACHE_DIR/$CACHE_TARBALL_NAME" +export PATH="${store_dir}/miniconda/bin:$PATH" + diff --git a/continuous_integration/travis_install.sh b/continuous_integration/travis_install.sh new file mode 100755 index 0000000..26efcd3 --- /dev/null +++ b/continuous_integration/travis_install.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash +# Run from top level directory of package +source ./continuous_integration/setup_env.sh +# Function to read off store +store_info() +{ + # Store a record of what's in the cached tarball + # This record allows us to automatically regenerate the tarball if the + # installed packages change. + rm -f "$1" + cat > "$1" <<-EOT + # -- cache information; autogenerated by ci/install.sh + MINICONDA_VERSION=$MINICONDA_VERSION + CHANNEL=$CHANNEL + PACKAGES=$PACKAGES +EOT + cat "$1" +} +# store_info "${store_dir}/info.txt" +./continuous_integration/install_miniconda.sh +./continuous_integration/conda_install_dep.sh +conda list +./continuous_integration/cleanup.sh