-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
122 lines (112 loc) · 5.49 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
language: python
cache: pip
matrix:
fast_finish: true
include:
- name: "Python 2.7"
python: 2.7
- name: "Python 3.5"
python: 3.5
- name: "Python 3.6"
python: 3.6
- name: "Python 3.7 - DEPLOY WebSite+Coverage+PyPi"
python: 3.7
env: DEPLOY_ENV="true"
dist: xenial
sudo: true
# - name: "Python 3.8" need autoclass issue solved https://github.com/smarie/python-autoclass/issues/43
# python: 3.8
# dist: xenial
# sudo: true
env:
global:
- GH_REF: git@github.com:smarie/python-valid8.git
before_install:
# (a) linux dependencies
- sudo apt-get install ant
- sudo apt-get install ant-optional # for junitreports
install:
- pip list
# Install all requirements using pip
- pip install six setuptools_scm # apparently python 2 requires this done beforehand
- python ci_tools/py_install.py pip ci_tools/requirements-pip.txt
# this does not work anymore on python 2 so lets only do it when needed
- if [ "${DEPLOY_ENV}" = "true" ]; then pip install mkdocs-material mkdocs pymdown-extensions pygments; fi;
- |
if [ "${TRAVIS_PYTHON_VERSION}" = "2.7" ]; then
echo "No need to install enforce pytypes checktypes BUT need to install future"
pip install future
pip install enum34
else
pip install autoclass
pip install enforce
pip install pytypes
pip install checktypes
fi
# 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:
# Local installation test
- pip install .
- python -c "import os; os.chdir('..'); import valid8"
- pip uninstall -y valid8 # so that the setuptools_scm test can be executed
# ***tests+coverage*** done in a dedicated script to capture exit code 1 and transform it to 0
- chmod a+x ./ci_tools/run_tests.sh
- sh ./ci_tools/run_tests.sh
# generate the badge for the test results and fail build if less than x%
- python ci_tools/generate-junit-badge.py 100
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 valid8 # 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_d1cad2cea12e_key -iv $encrypted_d1cad2cea12e_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" ] && [ "${DEPLOY_ENV}" = "true" ]; then echo "Pushing to github"; PYTHONPATH=valid8/ 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 ./valid8
deploy:
# Deploy on PyPI on tags
- provider: pypi
user: "smarie"
password:
secure: "qQqjDAx4pD5V+U3ruuWqu3xldmNs6Q+XAi7yfgT8E5l47mYEZ0jFNz+SpDgQpgYbQzGRjAKRHWzJejhncv5wJYMqPa70B7DNMRgNL7GEpsT8mYQJYtG5ZUDx2NbNFzcVRTyzl7dJj6LzPVQt6z/2yZ/9KqBXsxvwGBjZCOGXtgFhqUJscFy51jwgo2IWuVUNRCnVJtaUkjudWPxH86RviKpyvDAxzCW2ZMXVOlpFxyeOu1oTSVIq9hPwOcUn9Roukl491YSK6vF9b6zZYzTEGhMp/+t+gccgrMRmcjdbXQnVSKsBlfzWI1hNmclqzKXjNCzFZIH3uELVhlRAmwLPDbdby2RMVARKfnMEGW+mqbM3gET8cXoxqz+hKXp6ZdJtm9+McO2ECa6+zVn/8V/QSlCT5HRf1a7/jyL/Ytv5LPEYnaU4dH52BfSgjaFzsOS/5DEa0CJb034LDCwc2L6yZfmVo7Rx6n2YcakE2UrQ7xDizlS6c0Ukcj/7U2fji3O7CjXBoccKotxJ9Eml2isMjq4rwW5Uizo2P1CbSgn05fdWeLl04drbE0ENze1Ac0bMaWkvDItJYW7ZqT1pBGRh6c1/AYgF/g34l2Uz6yDQyA5FBCgVSbeVz5u9Hzs7x0XQmk0z6L0L/bi9SDC93m7bon60gwNM6YAeT6N8wpt/jrw="
on:
tags: true
# python: 3.5 #only one of the builds have to be deployed
condition: $DEPLOY_ENV = "true"
# 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-valid8 -cf ./docs/changelog.md -d https://smarie.github.io/python-valid8/changelog/ $TRAVIS_TAG
skip_cleanup: true
on:
tags: true
# only one of the builds have to be deployed
condition: $DEPLOY_ENV = "true"
notifications:
email:
on_success: never # options: [always|never|change] default: always