-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy path.travis.yml
More file actions
134 lines (124 loc) · 5.83 KB
/
Copy path.travis.yml
File metadata and controls
134 lines (124 loc) · 5.83 KB
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
language: python
cache: pip
matrix:
fast_finish: true
include:
- python: 2.7
env: TYPE_CHECKER="none"
- python: 2.7
env: TYPE_CHECKER="pytypes"
- python: 3.5.3
env: TYPE_CHECKER="none"
- python: 3.5.3
env: TYPE_CHECKER="pytypes"
- python: 3.5.3
env: TYPE_CHECKER="typeguard"
- python: 3.5
env: TYPE_CHECKER="none"
- python: 3.5
env: TYPE_CHECKER="pytypes"
- python: 3.5
env: TYPE_CHECKER="typeguard"
- python: 3.6
env: TYPE_CHECKER="none"
- python: 3.6
env: TYPE_CHECKER="pytypes"
- python: 3.6
env: TYPE_CHECKER="typeguard"
- python: 3.7
env: TYPE_CHECKER="none"
dist: xenial
sudo: true
# - python: 3.7
# env: TYPE_CHECKER="pytypes"
# dist: xenial
# sudo: true
- python: 3.7
env: TYPE_CHECKER="typeguard"
dist: xenial
sudo: true
env:
global:
- GH_REF: git@github.com:smarie/python-pyfields.git
before_install:
# (a) linux dependencies
- sudo apt-get install pandoc
- sudo apt-get install ant
- sudo apt-get install ant-optional # for junitreports
install:
- pip list
- pip install six setuptools_scm # apparently python 2 requires this
- python ci_tools/py_install.py pip ci_tools/requirements-pip.txt
# travis-specific installs
- pip install PyGithub # for ci_tools/github_release.py
- pip install codecov # See https://github.com/codecov/example-python.
- pip list
script:
# - coverage run tests.py
# cythonization step
- python setup.py build_ext --inplace # --compiler=msvc
- python setup.py bdist_wheel # create the wheel including the cython files
- pip install --pre --no-index --find-links dist\ pyfields # install existing wheels including pre-releases
# - pip install .
- python -c "import os; os.chdir('..'); import pyfields"
# ***tests***
# - coverage run tests.py
# - pytest --junitxml=reports/junit/junit.xml --html=reports/junit/report.html --cov-report term-missing --cov=./pyfields -v pyfields/tests/
# now done in a dedicated script to capture exit code 1 and transform it to 0
- chmod a+x ./ci_tools/run_tests.sh
- if [ ! "${TYPE_CHECKER}" = "none" ]; then pip install "${TYPE_CHECKER}"; fi;
- sh ./ci_tools/run_tests.sh
- python ci_tools/generate-junit-badge.py 100 # generates the badge for the test results and fail build if less than x%
after_success:
# ***reporting***
# - junit2html junit.xml testrun.html output is really not nice
- ant -f ci_tools/generate-junit-html.xml # generates the html for the test results. Actually we dont use it anymore
- codecov
# - pylint pyfields # note that at the moment the report is simply lost, we dont transform the result into anything
# ***documentation***
- mkdocs build -f docs/mkdocs.yml
- mv reports/junit docs/ # not in site/ anymore so that we do not need to use --dirty (it breaks client-side search)
# mkdocs gh-deploy requires special care :
# ---grant the possibility to push on the repo---
- openssl aes-256-cbc -K $encrypted_f0bdab8dce0d_key -iv $encrypted_f0bdab8dce0d_iv -in ci_tools/github_travis_rsa.enc -out ci_tools/github_travis_rsa -d
# If the output file does not exist, that is because the secret is invalid. This can happen in forked repos so do not fail the build
- |
if [ -s "ci_tools/github_travis_rsa" ]; then
chmod 600 ci_tools/github_travis_rsa
eval `ssh-agent -s` # launch the authentication agent
ssh-add ci_tools/github_travis_rsa # register the decrypted key
git config user.name "Automatic Publish"
git config user.email "sylvain.marie@schneider-electric.com"
git remote add gh-remote "${GH_REF}";
git fetch gh-remote && git fetch gh-remote gh-pages:gh-pages; # make sure we have the latest gh-remote
# push but only if this is not a build triggered by a pull request
# note: do not use the --dirty flag as it breaks client-side search
if [ "${TRAVIS_PULL_REQUEST}" = "false" ] && [ "${TRAVIS_PYTHON_VERSION}" = "3.5" ]; then echo "Pushing to github"; PYTHONPATH=pyfields/ mkdocs gh-deploy -v -f docs/mkdocs.yml --remote-name gh-remote; git push gh-remote gh-pages; fi;
else
echo "File 'ci_tools/github_travis_rsa' has not been created, please check your encrypted repo token in .travis.yml, on the line starting with 'openssl aes-256-cbc...'"
fi
# -- create the _version.py file
- python ci_tools/write_version.py ./pyfields
deploy:
# Deploy on PyPI on tags
- provider: pypi
user: "smarie"
password:
secure: "bXy76Y5rU56wmkUKOWSUAjEaV/hdXI9xp9scNptQci5MAs5EDbnEDNKKU+aoIocbPBCLLlVekjLu8XKM4BeJEpBtPF7VTiZdEHf6o4q4Kaz3TFzePGKSRrOqcCSJXKynw0ZdlENlOy0GRHtju75cxdYV+TQhTfd5NEI34bCh9lHM9/I0VKVHTSB6GXRmDAW7MoqTChszywfTSflSzcH5AlNBc0KdItZCf4zuTtKmyTFxZ1jDI0DQP4dGwgGKa+/tOW0YSo2FHIwezVUefdQh/+8goAOydaPpMmLCetp5ZavRyOnRp5ELLex0EsgwZ8rq12cCXHfwSmffamMdhRYLW1vthXkxyZOGZkuEaF6pK1E8KxtbtqOMnWEmJ3MMQCxyx8xfyodQ8QnZQrN3TL7v1FaScImofdSDuUNciCzJgIu5NPdAk6c3vMPdWiJ99BBhKbzDRa6jJLAeJn1AVZhiMM6tMBbr3MzHml5vCtMpiDaACyRluzARb5EHWY0j27hyXcJTr2NJ87dbDfgVG5ccZ55zJdJ3sk9+EwsWh+CJaaQlW80JU/y4fBw2lddP48CHKdqu5WetrGm9PAPCg2PuhnuNv0/QIgFG7pAZZd04brLyJwYnFpTr+l0/lxqqvjRU6865NyzUdcQBbzJEbMGHClhhbCgGoGrYGEWJpbLX+Js="
on:
tags: true
python: 3.5 #only one of the builds have to be deployed
condition: $TYPE_CHECKER = "none"
# server: https://test.pypi.org/legacy/
distributions: "sdist bdist_wheel"
# Create a github release on tags
- provider: script
script: python ci_tools/github_release.py -s $GITHUB_TOKEN --repo-slug smarie/python-pyfields -cf ./docs/changelog.md -d https://smarie.github.io/python-pyfields/changelog/ $TRAVIS_TAG
skip_cleanup: true
on:
tags: true
python: 3.5 #only one of the builds have to be deployed
condition: $TYPE_CHECKER = "none"
notifications:
email:
on_success: never # options: [always|never|change] default: always