11
11
# Do not choose a language; we provide our own build tools.
12
12
language : generic
13
13
14
+ services :
15
+ - docker
16
+
14
17
# Caching so the next build will be fast too.
15
18
cache :
16
19
directories :
17
20
- $HOME/.ghc
18
21
- $HOME/.cabal
19
22
- $HOME/.stack
20
23
- $TRAVIS_BUILD_DIR/.stack-work
24
+ - $TRAVIS_BUILD_DIR/examples/.stack-work
21
25
22
26
# The different configurations we want to test. We have BUILD=cabal which uses
23
27
# cabal-install, and BUILD=stack which uses Stack. More documentation on each
@@ -31,38 +35,26 @@ cache:
31
35
# addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
32
36
matrix :
33
37
include :
34
- # We grab the appropriate GHC and cabal-install versions from hvr's PPA. See:
35
- # https://github.com/hvr/multi-ghc-travis
36
- # - env: BUILD=cabal GHCVER=7.0.4 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
37
- # compiler: ": #GHC 7.0.4"
38
- # addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
39
- # - env: BUILD=cabal GHCVER=7.2.2 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
40
- # compiler: ": #GHC 7.2.2"
41
- # addons: {apt: {packages: [cabal-install-1.16,ghc-7.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
42
- # - env: BUILD=cabal GHCVER=7.4.2 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
43
- # compiler: ": #GHC 7.4.2"
44
- # addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
45
- # - env: BUILD=cabal GHCVER=7.6.3 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
46
- # compiler: ": #GHC 7.6.3"
47
- # addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
48
- # - env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.18 HAPPYVER=1.19.5 ALEXVER=3.1.7
49
- # compiler: ": #GHC 7.8.4"
50
- # addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
51
- # - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.22 HAPPYVER=1.19.5 ALEXVER=3.1.7
52
- # compiler: ": #GHC 7.10.3"
53
- # addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
54
- - env : BUILD=cabal GHCVER=8.0.2 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7
55
- compiler : " : #GHC 8.0.2"
56
- addons : {apt: {packages: [cabal-install-1.24,ghc-8.0.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
38
+ - env : BUILD=integration-tests
39
+ compiler : " : #integration-tests"
40
+ addons : {apt: {packages: [libgmp-dev]}}
41
+
42
+ - env : BUILD=stack ARGS=""
43
+ compiler : " : #stack default"
44
+ addons : {apt: {packages: [libgmp-dev]}}
45
+
46
+ # - env: BUILD=cabal GHCVER=8.0.2 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7
47
+ # compiler: ": #GHC 8.0.2"
48
+ # addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
57
49
- env : BUILD=cabal GHCVER=8.2.2 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7
58
50
compiler : " : #GHC 8.2.2"
59
51
addons : {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
60
52
- env : BUILD=cabal GHCVER=8.4.4 CABALVER=2.2 HAPPYVER=1.19.5 ALEXVER=3.1.7
61
53
compiler : " : #GHC 8.4.4"
62
54
addons : {apt: {packages: [cabal-install-2.2,ghc-8.4.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
63
- - env : BUILD=cabal GHCVER=8.6.3 CABALVER=2.4 HAPPYVER=1.19.5 ALEXVER=3.1.7
64
- compiler : " : #GHC 8.6.3 "
65
- addons : {apt: {packages: [cabal-install-2.4,ghc-8.6.3 ,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
55
+ - env : BUILD=cabal GHCVER=8.6.5 CABALVER=2.4 HAPPYVER=1.19.5 ALEXVER=3.1.7
56
+ compiler : " : #GHC 8.6.5 "
57
+ addons : {apt: {packages: [cabal-install-2.4,ghc-8.6.5 ,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
66
58
67
59
# Build with the newest GHC and cabal-install. This is an accepted failure,
68
60
# see below.
@@ -72,30 +64,6 @@ matrix:
72
64
73
65
# The Stack builds. We can pass in arbitrary Stack arguments via the ARGS
74
66
# variable, such as using --stack-yaml to point to a different file.
75
- - env : BUILD=stack ARGS=""
76
- compiler : " : #stack default"
77
- addons : {apt: {packages: [libgmp-dev]}}
78
-
79
- # - env: BUILD=stack ARGS="--resolver lts-2"
80
- # compiler: ": #stack 7.8.4"
81
- # addons: {apt: {packages: [libgmp-dev]}}
82
-
83
- # - env: BUILD=stack ARGS="--resolver lts-3"
84
- # compiler: ": #stack 7.10.2"
85
- # addons: {apt: {packages: [libgmp-dev]}}
86
-
87
- # - env: BUILD=stack ARGS="--resolver lts-6"
88
- # compiler: ": #stack 7.10.3"
89
- # addons: {apt: {packages: [libgmp-dev]}}
90
-
91
- # - env: BUILD=stack ARGS="--resolver lts-7"
92
- # compiler: ": #stack 8.0.1"
93
- # addons: {apt: {packages: [libgmp-dev]}}
94
-
95
- # - env: BUILD=stack ARGS="--resolver lts-9"
96
- # compiler: ": #stack 8.0.2"
97
- # addons: {apt: {packages: [libgmp-dev]}}
98
-
99
67
- env : BUILD=stack ARGS="--resolver lts-11 --stack-yaml stack-8.2.2.yaml"
100
68
compiler : " : #stack 8.2.2"
101
69
addons : {apt: {packages: [libgmp-dev]}}
@@ -104,8 +72,8 @@ matrix:
104
72
compiler : " : #stack 8.4.4"
105
73
addons : {apt: {packages: [libgmp-dev]}}
106
74
107
- - env : BUILD=stack ARGS="--resolver lts-13 "
108
- compiler : " : #stack 8.6.3 "
75
+ - env : BUILD=stack ARGS="--resolver lts-14 "
76
+ compiler : " : #stack 8.6.5 "
109
77
addons : {apt: {packages: [libgmp-dev]}}
110
78
111
79
# Nightly builds are allowed to fail
@@ -118,27 +86,6 @@ matrix:
118
86
compiler : " : #stack default osx"
119
87
os : osx
120
88
121
- # Travis includes an macOS which is incompatible with GHC 7.8.4
122
- # - env: BUILD=stack ARGS="--resolver lts-2"
123
- # compiler: ": #stack 7.8.4 osx"
124
- # os: osx
125
-
126
- # - env: BUILD=stack ARGS="--resolver lts-3"
127
- # compiler: ": #stack 7.10.2 osx"
128
- # os: osx
129
-
130
- # - env: BUILD=stack ARGS="--resolver lts-6"
131
- # compiler: ": #stack 7.10.3 osx"
132
- # os: osx
133
-
134
- # - env: BUILD=stack ARGS="--resolver lts-7"
135
- # compiler: ": #stack 8.0.1 osx"
136
- # os: osx
137
-
138
- # - env: BUILD=stack ARGS="--resolver lts-9"
139
- # compiler: ": #stack 8.0.2 osx"
140
- # os: osx
141
-
142
89
- env : BUILD=stack ARGS="--resolver lts-11 --stack-yaml stack-8.2.2.yaml"
143
90
compiler : " : #stack 8.2.2 osx"
144
91
os : osx
@@ -147,8 +94,8 @@ matrix:
147
94
compiler : " : #stack 8.4.4 osx"
148
95
os : osx
149
96
150
- - env : BUILD=stack ARGS="--resolver lts-13 "
151
- compiler : " : #stack 8.6.3 osx"
97
+ - env : BUILD=stack ARGS="--resolver lts-14 "
98
+ compiler : " : #stack 8.6.5 osx"
152
99
os : osx
153
100
154
101
- env : BUILD=stack ARGS="--resolver nightly"
@@ -202,7 +149,7 @@ install:
202
149
# stack --no-terminal $ARGS solver --update-config)
203
150
204
151
# Build the dependencies
205
- stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies
152
+ stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies --fast
206
153
;;
207
154
cabal)
208
155
cabal --version
@@ -211,10 +158,22 @@ install:
211
158
# Get the list of packages from the stack.yaml file. Note that
212
159
# this will also implicitly run hpack as necessary to generate
213
160
# the .cabal files needed by cabal-install.
214
- PACKAGES=$(stack --install -ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
161
+ PACKAGES=$(stack --system -ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
215
162
216
163
cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
217
164
;;
165
+ integration-tests)
166
+ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl && sudo mv kubectl /usr/local/bin/
167
+ # Download and install kind
168
+ curl -LO https://github.com/kubernetes-sigs/kind/releases/download/v0.5.1/kind-linux-amd64 && chmod +x kind-linux-amd64 && sudo mv kind-linux-amd64 /usr/local/bin/kind
169
+ # Create a new Kubernetes cluster using KinD
170
+ kind create cluster
171
+
172
+ # Set KUBECONFIG environment variable
173
+ export KUBECONFIG="$(kind get kubeconfig-path)"
174
+
175
+ stack --no-terminal --install-ghc --stack-yaml ./examples/stack.yaml --work-dir .stack-work build --only-dependencies --fast
176
+ ;;
218
177
esac
219
178
set +ex
220
179
@@ -223,7 +182,7 @@ script:
223
182
set -ex
224
183
case "$BUILD" in
225
184
stack)
226
- stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
185
+ stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps --fast
227
186
;;
228
187
cabal)
229
188
cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
@@ -249,5 +208,23 @@ script:
249
208
cd $ORIGDIR
250
209
done
251
210
;;
211
+ integration-tests)
212
+ EXAMPLE_ARGS="--no-terminal --install-ghc --stack-yaml ./examples/stack.yaml --work-dir .stack-work"
213
+ stack $EXAMPLE_ARGS build --fast
214
+
215
+ # Run simple test
216
+ stack $EXAMPLE_ARGS exec simple
217
+
218
+ # Build and load the in-cluster-example image
219
+ cp "$(stack $EXAMPLE_ARGS exec which in-cluster)" in-cluster-example
220
+ docker build . -f ./examples/in-cluster/Dockerfile -t in-cluster-example:latest
221
+ kind load docker-image in-cluster-example:latest
222
+
223
+ # Wait for kind node to be ready
224
+ kubectl wait --for=condition=Ready node --all
225
+
226
+ # Run the test pod
227
+ ./examples/in-cluster/run-test.sh
228
+ ;;
252
229
esac
253
230
set +ex
0 commit comments