-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy path.travis.yml
116 lines (104 loc) · 3.5 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
# This Source Code Form is licensed MPL-2.0: http://mozilla.org/MPL/2.0
#
# http://docs.travis-ci.com/user/customizing-the-build/
# http://lint.travis-ci.org/
os: linux
dist: xenial
language: generic
services: docker
# conditionalize build to ignore tags: https://docs.travis-ci.com/user/conditional-builds-stages-jobs/
if: tag IS blank
cache:
directories:
- ~/cache/
# We use $PIPELINE to carry cache context along job pipelines (workflows)
# https://docs.travis-ci.com/user/caching/
before_script: |
test "$TRAVIS_BRANCH^$TRAVIS_PULL_REQUEST" != "master^false" -o \
-z "$BINTRAY_API_KEY" || echo "$BINTRAY_API_KEY" > .bintray_api_key
# Job pipelines
jobs:
include:
# == 'Gcc' Pipeline ==
# Build a highly optimized Gcc and upload it. Disabled: appimage bintray
- stage: Stage1
name: "GCC (release build check)"
env: PIPELINE=Gcc
before_install: |
travis_retry git fetch --unshallow --tags
script: |
misc/cibuild.sh gcc release all check
# == 'Linting' Pipeline ==
# Generate all possible source code linting reports,
# sort slow jobs into separate stages to avoid timeouts.
- stage: Stage1
name: "Linting-1 (clang cppcheck scan-build check)"
env: PIPELINE=linting
before_install: |
rm -v -rf ~/cache/$TRAVIS_BUILD_NUMBER/ ~/beast &&
travis_retry git fetch --unshallow --tags &&
cd .. && mv beast ~/ && cd ~/beast/
script: |
misc/cibuild.sh quick cppcheck scan-build check
before_cache: |
mkdir -p ~/cache/$TRAVIS_BUILD_NUMBER/ &&
cd ~ && mv ~/beast/ ~/cache/$TRAVIS_BUILD_NUMBER/ &&
(cd ~/cache/ && pwd && ls -al )
- stage: Stage2
name: "Linting-2 (clang-tidy listunused listhacks bintray)"
env: PIPELINE=linting
before_install: |
mv ~/cache/$TRAVIS_BUILD_NUMBER/beast ~/ && cd ~/beast/
script: |
misc/cibuild.sh clang-tidy &&
misc/cibuild.sh listunused listhacks bintray
before_cache: |
rm -rf ~/cache/
# == Stage2 Fedora ==
# Fedora build tests, runs *after* the 'appimage' succeeded
- stage: Stage1
name: "Fedora-32 (build & check)"
env: PIPELINE=Fedora-32
before_install: |
travis_retry git fetch --unshallow --tags
script: |
docker build --build-arg DIST=fedora:32 -f misc/Dockerfile-yum -t beast-fedora-32 .
# == 'Asan' Pipeline ==
# Run checks with asan turned on.
- stage: Stage2
name: "Asan check"
env: PIPELINE=asan
before_install: |
travis_retry git fetch --unshallow --tags
script: |
misc/ciwitness.sh out/asan/build.log asan all check bintray
# == 'Ubsan' Pipeline ==
# Run checks with ubsan turned on.
- stage: Stage2
name: "Ubsan check"
env: PIPELINE=ubsan
before_install: |
travis_retry git fetch --unshallow --tags
script: |
misc/ciwitness.sh out/ubsan/build.log ubsan all check bintray
# == allow_failures ==
allow_failures:
- script: |
misc/ciwitness.sh out/asan/build.log asan all check bintray
- script: |
misc/ciwitness.sh out/ubsan/build.log ubsan all check bintray
- script: |
misc/cibuild.sh clang-tidy &&
misc/cibuild.sh listunused listhacks bintray
notifications:
irc:
channels:
- "irc.gimp.org#beast"
on_success: always
on_failure: always
skip_join: true
email: false
#recipients:
#on_success: never
#on_failure: change