-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path.travis.yml
112 lines (102 loc) · 5.21 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
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"
python: 3.8
dist: xenial
sudo: true
env:
global:
- GH_REF: [email protected]:smarie/python-getversion.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 setuptools_scm # apparently python 2 requires this done beforehand
- python ci_tools/py_install.py pip ci_tools/requirements-pip.txt
# mkdocs requirements: 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 pip install doit; 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 getversion"
- pip uninstall -y getversion # 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 getversion # at the moment the report would be 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_67de271a4fb2_key -iv $encrypted_67de271a4fb2_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" ] && [ "${DEPLOY_ENV}" = "true" ]; then echo "Pushing to github"; PYTHONPATH=getversion/ 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 ./getversion
deploy:
# Deploy on PyPI on tags
- provider: pypi
user: "smarie"
password:
secure: "yaf389gcod/g9nvHtgt4AHuHi2qeVljwuHOTb5l4N2dkoGQz+UZiEiXY80+KcZ3XPHcE2MsrFNO2rKqHVCOjwvtrZCNjM9w2Zk+jBAyOKKx1SICWbfzvhlZN0pSNee6+805N6MrlzJ3SlgtsJeMjLttrh51Zrh2LsashSDI9YNVRG1a5iB6k8LOCp+5PZcuhh9qA0tWxQdxDU/NGcazGx97nrjT+xHaQ1agDt/h9wOZoLlUK+A1TnVesXF8k1DC6sirPmtvF5fCKOFniHZwFV2hS/htEgCuK5fpjheD6nGKNguUw88wiHTCNIuebyqaab79HPrWUNNpoOfJ8sSecJs0d9Kf647AueN8XX3KSDyhs4P+JwtRaAYCsVkqKbqyxlxE6bxe1KoRFREqk9mrad/ify/N9Cwrc02vkuJu3mBNZciO8oqosY1xRlvQQxz+p201eaads8cIMfzJkRVbIF8QC2ADfH9uGnwp1St6lBDx88+ZtM9LvPIzaQsvMXAqvA5mN4TlFBFxDuYDnL6C/sPAfk+Mc8hRWQ0CA2lwRQbLkQXI0VF0QpIAJbNIDrE8apYDVGZ6wZsy+TP5v9yxR2CM3mB+qzX71kYsvNHB3DlK89PXhRt/qLnY4+lhiIwC24YsOiS3KRQlWrE+3fi/8TzNjsrFV/UAnzW9jQk9WkeY="
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-getversion -cf ./docs/changelog.md -d https://smarie.github.io/python-getversion/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