forked from chhenning/nupic.core
-
Notifications
You must be signed in to change notification settings - Fork 0
/
circle.yml
142 lines (131 loc) · 4.32 KB
/
circle.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
version: 2
jobs:
build-and-test:
macos:
xcode: '9.0.1'
working_directory: ~/numenta/nupic.core
parallelism: 1
environment:
XCODE_SCHEME: nupic
XCODE_WORKSPACE: nupic
ARCHFLAGS: -arch x86_64
PYTHONPATH: ~/Library/Python/2.7/lib/python/site-packages
PYBIN: ~/Library/Python/2.7/bin
steps:
# Machine Setup
- run:
name: Make sure to use OS X in CircleCI Web UI
command: |
if [[ "$OSTYPE" != "darwin"* ]]; then
echo "Must set option to use OS X in CircleCI Web UI" && exit 1;
fi
- run: sudo systemsetup -settimezone 'GMT'
- run:
name: Restoring system python
command: |
brew uninstall python
curl https://bootstrap.pypa.io/get-pip.py | python - --user
echo 'export PATH=$HOME/Library/Python/2.7/bin:$PATH' >> $BASH_ENV
- run:
name: Installing cmake
command: brew install cmake
- checkout
# Dependencies
# Restore the dependency cache
- restore_cache:
keys:
# This branch if available
- v1-dep-{{ .Branch }}-
# Default branch if not
- v1-dep-master-
# Any branch if there are none on the default branch - this should be
# unnecessary if you have your default branch configured correctly
- v1-dep-
- run:
name: Installing dependencies
command: |
pip install --user --upgrade --verbose pip setuptools setuptools-scm
pip install --no-cache-dir --user -r bindings/py/requirements.txt --verbose || exit
# Save dependency cache
- save_cache:
key: v1-dep-{{ .Branch }}-{{ epoch }}
paths:
# This is a broad list of cache paths to include many possible
# development environments.
- vendor/bundle
- ~/virtualenvs
- ~/.m2
- ~/.ivy2
- ~/.bundle
- ~/.go_workspace
- ~/.gradle
- ~/.cache/bower
# Build
- run:
name: Compiling
environment:
VERBOSE: 1
command: |
mkdir -p build/scripts
cd build/scripts
cmake ../.. -DCMAKE_BUILD_TYPE=Release -DNTA_COV_ENABLED=ON -DCMAKE_INSTALL_PREFIX=../release -DPY_EXTENSIONS_DIR=../../bindings/py/src/nupic/bindings
make | grep -v -F '\\-\\- Installing:'
make install 2>&1 | grep -v -F 'Installing:'
- run:
name: Build distribution
command: |
python setup.py bdist_wheel
mkdir -p dist/include/nupic
mv bindings/py/dist/*.whl dist/
cp bindings/py/requirements.txt dist/
cp build/release/include/nupic/Version.hpp dist/include/nupic/
# Test
- run:
name: Running python tests
command: |
mkdir -p tests/py
pip install --user --no-index --find-links=$CIRCLE_WORKING_DIRECTORY/dist/ nupic.bindings
py.test --junitxml tests/py/junit-test-results.xml bindings/py/tests
- run:
name: Running C++ Tests
command: |
mkdir -p tests/cpp
pushd build/release/bin
./cpp_region_test
./py_region_test
./helloregion
./hello_sp_tp
./prototest
./unit_tests --gtest_output=xml:$CIRCLE_WORKING_DIRECTORY/tests/cpp/unit_tests_report.xml
- store_test_results:
path: tests
- store_artifacts:
path: dist/*.whl
- persist_to_workspace:
root: dist
paths:
- nupic.bindings*.whl
- requirements.txt
- include/nupic
deploy-s3:
machine: true
steps:
- attach_workspace:
at: dist
- run:
name: Deploying to S3
command: |
pip install awscli --upgrade --user
tar -zcv -f nupic_core-${CIRCLE_SHA1}-darwin64.tar.gz dist
aws s3 cp nupic_core-${CIRCLE_SHA1}-darwin64.tar.gz s3://artifacts.numenta.org/numenta/nupic.core/circle/
workflows:
version: 2
build-test-deploy:
jobs:
- build-and-test
- deploy-s3:
requires:
- build-and-test
filters:
branches:
only: master