-
Notifications
You must be signed in to change notification settings - Fork 56
/
.travis.yml
140 lines (126 loc) · 3.99 KB
/
.travis.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
dist: xenial
language: python
python:
- 3.8
- 3.7
- 3.6
- 3.5
env:
global:
- SKIP_DEAP=1 # skip evolutionary optimization
- NOSE_VERBOSE=2
- NOSE_WITH_TIMER=1
- NOSE_WITH_ID=1
- NOSE_REDNOSE=1
- NOSE_WITH_COVERAGE=1
- NOSE_COVER_PACKAGE="pygsti"
- NOSE_PROCESSES=-1
- NOSE_PROCESS_TIMEOUT=2400 # timeout after 40 minutes (travis job timeout is 50 minutes)
matrix:
- NOSE_WHERE="test/unit/"
# Install native package dependencies & initialize build environment
before_install:
- >
sudo apt-get update -qq -y &&
sudo apt-get install -qq -y
gfortran libblas-dev liblapack-dev openmpi-bin openmpi-common openssh-client
openssh-server libopenmpi1.10 libopenmpi-dev libsuitesparse-dev
- cmake --version
- gcc --version
install:
# Install base dependencies
- pip install -e .
# Install test dependencies
- pip install -e .[testing]
# Show pip environment, for diagnostics
- pip freeze
# Default `test' stage script
script:
- echo "nosetests $NOSETESTS"
- nosetests $NOSETESTS
# Cache pip packages
cache:
pip: true
timeout: 1000
stages:
- name: lint
if: NOT branch IN (master, beta)
- name: lint-comprehensive
if: branch IN (master, beta)
- test
# Run extra tests, but only on master/beta
- name: test-extra
if: branch IN (master, beta, ci-debug)
- name: push
if: (branch = develop) AND (NOT (type = pull_request))
- name: deploy
if: tag IS present
jobs:
include:
- &lint-job
stage: lint
name: "PEP8"
python: 3.7
before_install: skip
install:
- pip install flake8
script:
- python -m flake8 --statistics $LINTOPTS pygsti
- <<: *lint-job
name: "Critical errors"
env: LINTOPTS="--config=.flake8-critical"
- <<: *lint-job
stage: lint-comprehensive
name: "Comprehensive linting"
# Can't use matrix expansion for included jobs or custom stages, so we'll manually list extra jobs
- stage: test-extra
python: 3.5
env: NOSE_WHERE="test/test_packages/" NOSETESTS="algorithms algorithmsb"
- stage: test-extra
python: 3.5
env: NOSE_WHERE="test/test_packages/" NOSETESTS="report reportb"
- stage: test-extra
python: 3.5
env: NOSE_WHERE="test/test_packages/" NOSETESTS="drivers objects tools iotest optimize construction extras"
- stage: test-extra
python: 3.5
env: NOSE_WHERE="test/test_packages/" NOSETESTS="mpi"
- stage: push
env: PUSH_BRANCH="beta"
install: skip
before_install:
- >-
openssl aes-256-cbc
-K $encrypted_8f2a7a9a4246_key
-iv $encrypted_8f2a7a9a4246_iv
-in CI/github_deploy_key.enc
-out CI/github_deploy_key
-d
- chmod 600 CI/github_deploy_key
- eval $(ssh-agent -s)
- ssh-add CI/github_deploy_key
script:
- CI/push.sh
- stage: deploy
env: PYPI_DEPLOY=1
install:
- pip install -e .[extension_modules]
script:
- echo "Pushing $TRAVIS_TAG to PyPI"
allow_failures:
- stage: lint
name: "PEP8"
deploy:
provider: pypi
user: pygsti-ci
password:
secure: vK9Lm939ZRMgQ/UdpCRSrbiWSN5h0e0/vKV+ZCtUL63KHMaK9AShSJhNOWZ2RUIi3c/ZKTlllCgj9O/r0MjP2qE5N3DLhm0t+QNjgMM4Iz4bsMJx4nPYTrAeiShyffPFJWSVSP9l6054mBGZow6aeZEzDGsF2Y3LzISzE47c8xFxJI2TSM1AJ+j1feRsayTDepBq5+di2z3GgBXT8qDWMS4EY+ljdgsHBQ5xRh3HmT5AcecltwRmNaWprLSukjpmTuX+HKgMazSKCsqvTXSuhKive+7OxONu0JGva14GGk9baO3mGVaYA0+9R72QIQxD2hKdLwzHzYeo1Rue1AAggKdlSUDZ5InrqXx2ASkdqyqw7p6GUyxEQGErSvbqyPqgyCs0wNkxZR9xAGeUX9SztZxhgQyFlZRdq0gahSQB6vuwlbg8NlV/hMW94n/wk+NrARf7fCSw9rglIaTECGjcxaijc4r+EAVwyiEwtoT7wsei1A2sNfxHBJaZfjy7VXPhE5oSswPQV4B5uS9pxuiEWFfFor4e+iHtwQTR/KkKDrm0OOmWSemHgO4MLubupPrTzyViGfHM7BGHNe8D9FpY+IgMV/7Je+WwbDfccY4PZgjKZq1HYHnbQIhIyO7nckU6LXh1YPC/32NxOCThB+0H484B5dvPYjprIXQ+xIDRcKc=
distributions: "sdist"
skip_existing: true
on:
tags: true
condition: $PYPI_DEPLOY = 1
notifications:
email:
on_success: change
on_failure: always