forked from GenericMappingTools/gmt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.travis.yml
150 lines (136 loc) · 6.02 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
141
142
143
144
145
146
147
148
149
150
# Configuration file for TravisCI
# Define environment variables and set build actions
env:
global:
- INSTALLDIR="$HOME/gmt-install-dir"
- COASTLINEDIR="$HOME/gmt-install-dir/coast"
- PATH="$INSTALLDIR/bin:$PATH"
- BUILD_DOCS=false
- DEPLOY_DOCS=false
- TEST=false
- CCACHE_MAXSIZE=200M
- CCACHE_COMPRESS=true
# Encrypted Github token (GH_TOKEN)
- secure: "cwHlTNa+b2lPiCbN5Ja9alj6EkKwJsuR5QcNPORrp3uCOQF9+cJUFEyMIGVGzrzZQnpjn05XYDr6eGFUYkbaR1QVUQdNH+2rCiScFHe94fRPJlJabxXexCfvZCNV8VRi6NSyFPuZKkCVs10bQ7Lk5dPS/V4Dalz1xyURcvI8H8XQFTmDYb/7QFw73l0WzNf+Y1rzNpRZEQ4ERhmnir489njCv1w7oJ0C+BrRvPqTmNmfXbrY6Bcana6BJvvumSY1xRaw60f/UNKYTlTVlYTVSWK1kq9mTfkhiJhe5oNoWchKloiOg3fA2XtAuucuXSdCjqo9aWHMxKJy+jQ7/BeId9hacvB9pVclYoOLARBcPoWDb21eKJZ8A70yKlUM3ryhVXM4drHzM4ITitPA1sEJWNJ2BQO8Cils0FfcOLvBR3NdbLi8RdHZItmU/Oe8o1srUTnnkdPRiEWbmAEs4pVrsHY9sD0660PXTFBSQ7sDXeyTl2etG/YSQKvE3ysOnZwhEuTXqf8cpo+tSbjindvWSyyN0HSuJ0bd7Ei+qWUQ3nJNEtHpiq8Ms6KUPHjPpWO2BEl+FQHWFpmRtwBg/REk36VWIl1UHSKuKkqxUT4qiZeL5zlrHGso+7QGhVjkYj5un3XoVObopFNVUB8y56xeW21gI51HK48cPd5rMnX95KE="
# Encrypted codecov token (CODECOV_TOKEN)
- secure: "LYeFC3IeHdb8ff5+AfnACUUMIc9KRNIDlbQnRIIx+VPT4AT5XGiwN8PT9VhIFWsU1pJOw8DUdtggQ2kbkal3voF6RDhbYOCn5xzTjJ6D5UOC2JeIBkhx+Cb8lx9qZtVAippVOVsEPxCIGGxhCMy5+Dczib+4pA/zyKuU3l9DqSdsBlgZWJ2o+qyAltSa6JX3kvMCDl7ahR/d/IZqDxKvsyljuYq/WqhflTa1JjTfNYXyvE2w/Ml74ui6RdqX1ign3wWzO3P4nmdE+i3m6x9jlG6KIqTRd3pK2871zERNpeSTRXoQL7GpDbF9LWXPig3vLwWbeW09CEt4ZaoaP/J0JbXHN/mC5668RrVphZdVQmwQ+RCjGBXK/0zQ5/hpF4XmcCcef4sQGIm03v58KqQ0MDNhBwr+PkA1OGKTM82xEL5dzdo5+sPxm9W/rPwWnB8/FwKcheBfacGbhJ2Vv75XlqrZdIdslS4hLGHFy5jBddSMWCokDDd8KtJyWBlI/FKVjAjk7X/YFGFzyQCw3e/p6A511Yk5QF0sm5qnbhVB6b5BoW1R2D5FhLdIXZuCOJD5sfQ2BLcq7UpXRIW/KkV0XUQjv8YoM/K6Kljh2uDBT9CRfWf4Nko5ClhD0pk+uMTZ9S/tS8blL9BZJrH3Atolq+oeoEMI2eJuWepav9GcqYk="
# We need sudo privileges for copying cached deb packages
sudo: required
language: c
cache:
pip: true
ccache: true
directories:
- $HOME/.ccache
- $HOME/cache-gshhg-dcw
- $HOME/cache-deb
before_cache:
- rm -rf $HOME/.cache/pip/log
# Only build pushes to select branches and tags. This avoids the double
# builds than happen when working on a branch instead of a fork.
branches:
only:
- master
- 5.4
# Regex to build tagged commits with version numbers
- /\d+\.\d+(\.\d+)?(\S*)?$/
# Set the Ubuntu version for the Linux builds
dist: xenial
# Create the build matrix with different jobs for each platform and cron jobs
matrix:
include:
- name: "Linux (compile only)"
os: linux
if: type != cron
- name: "Linux (cron)"
os: linux
if: type = cron
env:
- TEST="true"
# Only build the docs on Linux cron jobs
- name: "Linux (cron - build docs)"
os: linux
if: type = cron
env:
- BUILD_DOCS=true
- DEPLOY_DOCS=true
- HTML_BUILDDIR="build/doc/rst/html"
# Setup the build environment
before_install:
- |-
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
# Download dependencies if not cached (https://stackoverflow.com/a/52446551)
DEB_CACHE=$HOME/cache-deb
DEB_PACKAGES="cmake ninja-build libcurl4-gnutls-dev libnetcdf-dev libgdal-dev libfftw3-dev libpcre3-dev liblapack-dev ghostscript curl"
if [[ "$TEST" == "true" || "$BUILD_DOCS" == "true" ]]; then
DEB_PACKAGES="$DEB_PACKAGES graphicsmagick ffmpeg python python-pip texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra latexmk"
fi
test -d $DEB_CACHE || mkdir $DEB_CACHE
echo "Copy cached deb packages"
sudo rsync -av ${DEB_CACHE}/ /var/cache/apt/archives/
echo "Start to install software"
sudo apt-get update
sudo apt-get install -y --no-install-recommends --no-install-suggests $DEB_PACKAGES
echo "Update the cache"
rsync -av /var/cache/apt/archives/*.deb ${DEB_CACHE}/
fi
- |-
- mkdir "$INSTALLDIR"
- mkdir "$COASTLINEDIR"
- ci/download-coastlines.sh
# Install GMT documentation dependencies
- if [[ "$BUILD_DOCS" == "true" ]]; then
pip install --user sphinx;
fi
# Install the package that we want to test
install:
# Build and install GMT
- ci/build-gmt.sh
# Print ccache status
- ccache --show-stats
# Run the actual tests and checks
script:
- cd build
# Run a few commands to make sure they don't crash
- gmt defaults -Vd
- gmt pscoast -R0/10/0/10 -JM6i -Ba -Ggray -P -Vd > test.ps
- gmt begin && gmt coast -R0/10/0/10 -JM6i -Ba -Ggray -Vd && gmt end
- if [[ "$TEST" == "true" ]]; then
cmake --build . --target check;
fi
# Upload test coverage even if build fails. Keep separate to make sure this task
# fails if the tests fail.
- if [[ "$TEST" == "true" ]]; then
bash <(curl -s https://codecov.io/bash);
fi
# Use set -e so that the build fails when a command fails.
# The default action for Travis-CI is to continue running even if a command fails.
- set -e
- if [[ "$BUILD_DOCS" == "true" ]]; then
cmake --build . --target docs_depends;
(while sleep 300; do echo . ; done)&
cmake --build . --target animation;
kill %1;
cmake --build . --target docs_html;
cmake --build . --target docs_man;
cmake --build . --target docs_pdf;
cmake --build . --target docs_pdf_shrink;
fi
- set +e
- cd ..
# Things to do if the build is successful
after_success:
- if [ "$DEPLOY_DOCS" == "true" ]; then
git clone --branch=1.0.0 --depth=1 https://github.com/fatiando/continuous-integration.git;
fi
# Deploy build artifacts to external services
deploy:
# Push the built HTML to the gh-pages branch
- provider: script
script: continuous-integration/travis/deploy-gh-pages.sh
skip_cleanup: true
on:
branch: master
condition: '"$DEPLOY_DOCS" == "true"'
notifications:
email: false