-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path.travis.yml
140 lines (128 loc) · 7.1 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
language: python
# DO NOT CACHE PIP: we rather use a fresh conda
# cache: pip
matrix:
fast_finish: true
include:
- python: 2.7
env: PYTEST_VERSION="<3" PYTEST_HTML_VERSION="==1.9.0" # indeed recent pytest_html require pytest>=3
- python: 2.7
env: PYTEST_VERSION="<4" PYTEST_HTML_VERSION="==1.9.0"
- python: 3.5
env: PYTEST_VERSION="<3" PYTEST_HTML_VERSION="==1.9.0" # indeed recent pytest_html require pytest>=3
- python: 3.5
env: PYTEST_VERSION="<4" PYTEST_HTML_VERSION="==1.9.0"
- python: 3.6
env: PYTEST_VERSION="<3" PYTEST_HTML_VERSION="==1.9.0" # indeed recent pytest_html require pytest>=3
- python: 3.6
env: PYTEST_VERSION="<4" PYTEST_HTML_VERSION="==1.9.0"
- python: 3.7
env: PYTEST_VERSION="<3" PYTEST_HTML_VERSION="==1.9.0" # indeed recent pytest_html require pytest>=3
dist: xenial
sudo: true
- python: 3.7
env: PYTEST_VERSION="<4" PYTEST_HTML_VERSION="==1.9.0"
dist: xenial
sudo: true
env:
global:
- GH_REF: [email protected]:smarie/python-pytest-steps.git
before_install:
# (a) linux dependencies
- sudo apt-get install ant
- sudo apt-get install ant-optional
# ------------ USE CONDA BECAUSE OTHERWISE WE HAVE VERSION CONFLICTS WITH PYTEST AND ITS PLUGINS ---
# (b) install conda - from https://conda.io/docs/user-guide/tasks/use-conda-with-travis-ci.html
- echo "downloading miniconda"; if [[ "$TRAVIS_PYTHON_VERSION" == "2.7" ]]; then
sudo wget -q https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -O miniconda.sh;
else
sudo wget -q https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.sh;
fi
- echo "installing miniconda to $HOME/miniconda"; bash miniconda.sh -b -p $HOME/miniconda; export PATH="$HOME/miniconda/bin:$PATH"
- echo "configuring miniconda"; hash -r; conda config --set always_yes yes --set changeps1 no
# - conda update -q conda NO !!!!
# (c) base conda environment
- echo "creating conda environment"; conda create -q -y -n test-environment python=$TRAVIS_PYTHON_VERSION
- echo "activating conda environment"; source activate test-environment
- conda info
- conda config --show-sources
- conda list
install:
- pip install six setuptools_scm # on python 2 this needs to be installed beforehand
- python ci_tools/py_install.py conda ci_tools/requirements-conda.txt
- 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 [ "${TRAVIS_PYTHON_VERSION}" = "3.5" ]; then pip install mkdocs-material mkdocs; fi;
# travis-specific installs
- pip install PyGithub # for ci_tools/github_release.py
- pip install codecov # See https://github.com/codecov/example-python.
- conda list
# WARNING to use the "true" pytest (or py.test) depending on version, "pytest" is NOT the way to go !
- python -m pytest --version # - pytest --version
script:
# - coverage run tests.py
- |
if [ "${TRAVIS_PYTHON_VERSION}" = "3.5" ]; then
pip install . --no-build-isolation # see https://github.com/gevent/gevent/issues/1180
else
pip install .
fi
- python -c "import os; os.chdir('..'); import pytest_steps"
# ***tests***
# - coverage run tests.py
# - pytest --junitxml=reports/junit/junit.xml --html=reports/junit/report.html --cov-report term-missing --cov=./pytest_steps -v pytest_steps/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
- 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 pytest_steps # 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_ddaf3af99ed9_key -iv $encrypted_ddaf3af99ed9_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 "[email protected]"
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" ] && [ "${PYTEST_VERSION}" = "<3" ]; then echo "Pushing to github"; PYTHONPATH=pytest_steps/ 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
deploy:
# Deploy on PyPI on tags
- provider: pypi
user: "smarie"
password:
secure: "oN45SXRkhCmCYIMYq6Syyr7Wa7GDNwEqoa28qps75R39Er44kpJel0h95cKnDAeYyVBenk/NuhFdUnsR90i9cRSGXU/gA7B4ia9KIZlNwARZngfCe7poo5q0oRi7fSFKGxLIGTHedD2u0m6LhXwJW/nBlxAdwqqd9o1cLEc4a6aLNTtYMAlHUuIGlPqC7T1eaEhv2XrFscipnAxffxlUMjsLq1HOGAGMc8jFCxe6hi6q0n7kDKBIE0HM2UH3polZi8zJO71kcGTYt45Vsr/Hj2R22Z78zVMdNHY+Mbrt5/YZBYaCOsKRMUoH4rL2e4F3mxOHAp2StwYai13ZnkQ4jiUgnMlv2ZAnNNnMQMYfe4sp0XGAq3EBUMExQ1f7hB58VNMaQNtK+X/N1T3in+3qTtUU5CheGtksFKeJjIyfWKb+bBtCYLoxLe+5qn30xLQfordFm6TyfUHsd2wyJelXsMWluxVJWdWY5tHvgA3OV7os4cbniYi8AWwKZQactHVXGuczVIW0qtIwUuytpvbIai5gjAon61qN8LVPeszoxydRc4CBv9n2eiAaPprWlTJgkteVogoXISBZqb9ioFqMMffbVyPy3uRdBh1CFwD4zO2oFMl5CnWSpE06yzFDw3QRXc0cMsjQZe7eq3zkckW3oqCprLNmmFErOa/4r1KjwHk="
on:
tags: true
python: 3.5 #only one of the builds have to be deployed
condition: $PYTEST_VERSION = "<3"
# 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-pytest-steps -cf ./docs/changelog.md -d https://smarie.github.io/python-pytest-steps/changelog/ $TRAVIS_TAG
skip_cleanup: true
on:
tags: true
python: 3.5 #only one of the builds have to be deployed
condition: $PYTEST_VERSION = "<3"
notifications:
email:
on_success: never # options: [always|never|change] default: always