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

use conda-recipes' build_tools/conda_build.py #36

Merged
merged 9 commits into from
Jan 15, 2020
341 changes: 200 additions & 141 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,168 +1,227 @@
version: 2

checkout:
post:
- ./ci-support/checkout_merge_commit.sh

aliases:
- &setup_miniconda
name: setup_miniconda
command: |
mkdir -p workspace
git clone -b validateNightly --depth 1 git@github.com:CDAT/cdat workspace/cdat
python workspace/cdat/scripts/install_miniconda.py -w $WORKDIR -p 'py3'
mkdir -p workspace
git clone -b validateNightly git@github.com:CDAT/cdat workspace/cdat
# install_miniconda.py installs miniconda3 under $WORKDIR/miniconda
python workspace/cdat/scripts/install_miniconda.py -w $WORKDIR -p 'py3'

- &create_conda_env
name: create_conda_env
environment:
PKGS: "genutil nose flake8 numpy cdat_info testsrunner 'libnetcdf=4.6.2'"
CHANNELS: "-c cdat/label/nightly -c conda-forge"
- &conda_rerender
name: conda_rerender
command: |
export PATH=$WORKDIR/miniconda/bin:$PATH
conda config --set always_yes yes --set changeps1 no
conda update -y -q conda
conda config --set anaconda_upload no
if [[ $PY_VER = "py2" ]]; then
conda create -n $PY_VER $CHANNELS $PKGS "python<3"
else
conda create -n $PY_VER $CHANNELS $PKGS "python>3" coverage coveralls
fi
git clone https://github.com/CDAT/conda-recipes.git $WORKDIR/conda-recipes
source $WORKDIR/miniconda/etc/profile.d/conda.sh
conda activate base
BUILD_SCRIPT="$WORKDIR/conda-recipes/build_tools/conda_build.py"
python $BUILD_SCRIPT -w $WORKDIR -l $LAST_STABLE -B 0 -p $PKG_NAME -b $CIRCLE_BRANCH --do_rerender

- &setup_cdutil
name: setup_cdutil
- &conda_build
name: conda_build
command: |
export PATH=$WORKDIR/miniconda/bin:$PATH
source activate $PY_VER
python setup.py install
rm -rf build
source $WORKDIR/miniconda/etc/profile.d/conda.sh
conda activate base
conda config --add channels conda-forge --force
conda config --add channels cdat/label/nightly --force
conda config --set channel_priority strict
BUILD_SCRIPT="$WORKDIR/conda-recipes/build_tools/conda_build.py"
python $BUILD_SCRIPT -w $WORKDIR -p $PKG_NAME --build_version $BUILD_VARIANT_VER --do_build

- &run_cdutil_tests
name: run_cdutil_tests
- &setup_run_tests
name: setup_run_tests
environment:
PKGS: "genutil numpy cdat_info testsrunner"
CHANNELS: "-c cdat/label/nightly -c conda-forge"
command: |
export PATH=$WORKDIR/miniconda/bin:$PATH
set -e
source activate $PY_VER
python run_tests.py -v2 -H $COVERAGE
RESULT=$?
echo "*** $PY_VER test result: "${RESULT}
exit $RESULT
source $WORKDIR/miniconda/etc/profile.d/conda.sh
conda activate base
conda create -y -n $ENV_NAME --use-local $CHANNELS "$CONDA_PY_VER" $PKG_NAME $PKGS $COVERAGE_PKGS
conda activate $ENV_NAME
conda list

- &run_tests
name: run_tests
command: |
source $WORKDIR/miniconda/etc/profile.d/conda.sh
conda activate $ENV_NAME
python run_tests.py -H -v2 -n 2 $COVERAGE
conda deactivate

- &conda_upload
name: conda_upload
environment:
CHANNELS: "-c cdat/label/nightly -c conda-forge -c cdat"
command: |
if [[ $CIRCLE_BRANCH != 'master' ]]; then
exit 0
fi
export PATH=${HOME}/project/$WORKDIR/miniconda/bin:$PATH
conda install conda-build anaconda-client
conda config --set anaconda_upload no
export CONDA_BLD_PATH=`pwd`/conda_build
git clone git://github.com/cdat/conda-recipes
cd conda-recipes
export PKG_NAME=cdutil
export USER=cdat
export VERSION=8.0
export LABEL=nightly
if [[ -d $PKG_NAME ]]; then
rm -rf $PKG_NAME
fi
ln -s ../recipe $PKG_NAME
python ./prep_for_build.py -l $VERSION
conda build $PKG_NAME $CHANNELS
anaconda -t $CONDA_UPLOAD_TOKEN upload -u $USER -l $LABEL $CONDA_BLD_PATH/noarch/$PKG_NAME-$VERSION.`date +%Y*`0.tar.bz2 --force
if [[ $CIRCLE_BRANCH != "master" ]]; then
exit 0
fi
source $WORKDIR/miniconda/etc/profile.d/conda.sh
conda activate base
UPLOAD_OPTIONS="-t $CONDA_UPLOAD_TOKEN upload -u $USER -l $LABEL"
anaconda $UPLOAD_OPTIONS $WORKDIR/miniconda/conda-bld/noarch/$PKG_NAME-$VERSION.`date +%Y*`0.tar.bz2 --force

- &run_coveralls
name: run_coveralls
command: |
export PATH=$WORKDIR/miniconda/bin:$PATH
source activate $PY_VER
coveralls
source deactivate
source $WORKDIR/miniconda/etc/profile.d/conda.sh
conda activate $ENV_NAME
coveralls
conda deactivate

jobs:
macos_cdutil_py2:
macos:
xcode: "11.1.0"
environment:
WORKDIR: "workspace/test_macos_cdutil_py2"
OS: "osx-64"
PY_VER: "py2"
steps:
- checkout
- run: *setup_miniconda
- run: *create_conda_env
- run: *setup_cdutil
- run: *run_cdutil_tests
- store_artifacts:
path: tests_html
destination: tests_html
macos_setup:
macos:
xcode: "11.3.0"
environment:
WORKDIR: /Users/distiller/project/macos_build
PKG_NAME: "cdutil"
REPO_NAME: "cdutil"
LAST_STABLE: "8.2"
BUILD_VARIANT_VER: "noarch"
steps:
- checkout
- run: *setup_miniconda
- run: *conda_rerender
- run: *conda_build
- persist_to_workspace:
root: .
paths:
- macos_build

macos_cdutil_py3:
macos:
xcode: "11.1.0"
environment:
WORKDIR: "workspace/test_macos_cdutil_py3"
OS: "osx-64"
PY_VER: "py3"
steps:
- checkout
- run: *setup_miniconda
- run: *create_conda_env
- run: *setup_cdutil
- run: *run_cdutil_tests
- store_artifacts:
path: tests_html
destination: tests_html
linux_setup:
machine:
image: circleci/classic:latest
environment:
WORKDIR: /home/circleci/project/linux_build
PKG_NAME: "cdutil"
REPO_NAME: "cdutil"
LAST_STABLE: "8.2"
BUILD_VARIANT_VER: "noarch"
steps:
- checkout
- run: *setup_miniconda
- run: *conda_rerender
- run: *conda_build
- persist_to_workspace:
root: .
paths:
- linux_build

linux_cdutil_py2:
machine:
image: circleci/classic:latest
environment:
WORKDIR: "workspace/test_linux_cdutil_py2"
OS: "linux-64"
PY_VER: "py2"
steps:
- checkout
- run: *setup_miniconda
- run: *create_conda_env
- run: *setup_cdutil
- run: *run_cdutil_tests
- store_artifacts:
path: tests_html
destination: tests_html
macos_cdutil_py2:
macos:
xcode: "11.3.0"
environment:
WORKDIR: /Users/distiller/project/macos_build
PKG_NAME: "cdutil"
REPO_NAME: "cdutil"
ENV_NAME: "test_cdutil"
CONDA_PY_VER: "python<3"
steps:
- checkout
- attach_workspace:
at: .
- run: *setup_run_tests
- run: *run_tests
- store_artifacts:
path: tests_html
destination: tests_html

linux_cdutil_py3:
machine:
image: circleci/classic:latest
environment:
WORKDIR: "workspace/test_linux_cdutil_py3"
OS: "linux-64"
PY_VER: "py3"
COVERAGE: "-c tests/coverage.json --coverage-from-egg"
steps:
- checkout
- run: *setup_miniconda
- run: *create_conda_env
- run: *setup_cdutil
- run: *run_cdutil_tests
- run: *run_coveralls
- run: *conda_upload
- store_artifacts:
path: tests_html
destination: tests_html
macos_cdutil_py37:
macos:
xcode: "11.3.0"
environment:
WORKDIR: /Users/distiller/project/macos_build
PKG_NAME: "cdutil"
REPO_NAME: "cdutil"
ENV_NAME: "test_cdutil"
CONDA_PY_VER: "python>=3.7,<3.8"
steps:
- checkout
- attach_workspace:
at: .
- run: *setup_run_tests
- run: *run_tests
- store_artifacts:
path: tests_html
destination: tests_html

workflows:
version: 2
cdutil:
jobs:
- macos_cdutil_py2
- macos_cdutil_py3
# requires:
# - macos_cdutil_py2
- linux_cdutil_py2
- linux_cdutil_py3
#requires:
# - linux_cdutil_py2
linux_cdutil_py2:
machine:
image: circleci/classic:latest
environment:
WORKDIR: /home/circleci/project/linux_build
PKG_NAME: "cdutil"
REPO_NAME: "cdutil"
ENV_NAME: "test_cdutil"
CONDA_PY_VER: "python<3"
steps:
- checkout
- attach_workspace:
at: .
- run: *setup_run_tests
- run: *run_tests
- store_artifacts:
path: tests_html
destination: tests_html

linux_cdutil_py37:
machine:
image: circleci/classic:latest
environment:
WORKDIR: /home/circleci/project/linux_build
PKG_NAME: "cdutil"
REPO_NAME: "cdutil"
ENV_NAME: "test_cdutil"
CONDA_PY_VER: "python>=3.7,<3.8"
COVERAGE: "-c tests/coverage.json --coverage-from-egg"
COVERAGE_PKGS: "coverage coveralls"
steps:
- checkout
- attach_workspace:
at: .
- run: *setup_run_tests
- run: *run_tests
- run: *run_coveralls
- store_artifacts:
path: tests_html
destination: tests_html

upload:
machine:
image: circleci/classic:latest
environment:
WORKDIR: /home/circleci/project/linux_build
PKG_NAME: "cdutil"
VERSION: "8.2"
USER: "cdat"
LABEL: "nightly"
steps:
- attach_workspace:
at: .
- run: pwd
- run: *conda_upload

workflows:
version: 2
cdutil:
jobs:
- macos_setup
- linux_setup
- macos_cdutil_py2:
requires:
- macos_setup
- macos_cdutil_py37:
requires:
- macos_setup
- linux_cdutil_py2:
requires:
- linux_setup
- linux_cdutil_py37:
requires:
- linux_setup
- upload:
requires:
- macos_cdutil_py2
- macos_cdutil_py37
- linux_cdutil_py2
- linux_cdutil_py37
29 changes: 0 additions & 29 deletions ci-support/checkout_merge_commit.sh

This file was deleted.