Skip to content

Commit 0190166

Browse files
committed
Create new travis config for integration tests
1 parent 95eb28b commit 0190166

File tree

1 file changed

+14
-246
lines changed

1 file changed

+14
-246
lines changed

.travis.yml

Lines changed: 14 additions & 246 deletions
Original file line numberDiff line numberDiff line change
@@ -1,253 +1,21 @@
1-
# This is the complex Travis configuration, which is intended for use
2-
# on open source libraries which need compatibility across multiple GHC
3-
# versions, must work with cabal-install, and should be
4-
# cross-platform. For more information and other options, see:
5-
#
6-
# https://docs.haskellstack.org/en/stable/travis_ci/
7-
#
8-
# Copy these contents into the root directory of your Github project in a file
9-
# named .travis.yml
10-
11-
# Do not choose a language; we provide our own build tools.
121
language: generic
132

14-
# Caching so the next build will be fast too.
15-
cache:
16-
directories:
17-
- $HOME/.ghc
18-
- $HOME/.cabal
19-
- $HOME/.stack
20-
- $TRAVIS_BUILD_DIR/.stack-work
3+
services:
4+
- docker
215

22-
# The different configurations we want to test. We have BUILD=cabal which uses
23-
# cabal-install, and BUILD=stack which uses Stack. More documentation on each
24-
# of those below.
25-
#
26-
# We set the compiler values here to tell Travis to use a different
27-
# cache file per set of arguments.
28-
#
29-
# If you need to have different apt packages for each combination in the
30-
# matrix, you can use a line such as:
31-
# addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
32-
matrix:
6+
jobs:
337
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]}}
57-
- env: BUILD=cabal GHCVER=8.2.2 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7
58-
compiler: ": #GHC 8.2.2"
59-
addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
60-
- env: BUILD=cabal GHCVER=8.4.4 CABALVER=2.2 HAPPYVER=1.19.5 ALEXVER=3.1.7
61-
compiler: ": #GHC 8.4.4"
62-
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]}}
66-
67-
# Build with the newest GHC and cabal-install. This is an accepted failure,
68-
# see below.
69-
- env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7
70-
compiler: ": #GHC HEAD"
71-
addons: {apt: {packages: [cabal-install-head,ghc-head,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
72-
73-
# The Stack builds. We can pass in arbitrary Stack arguments via the ARGS
74-
# 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-
- env: BUILD=stack ARGS="--resolver lts-11 --stack-yaml stack-8.2.2.yaml"
100-
compiler: ": #stack 8.2.2"
101-
addons: {apt: {packages: [libgmp-dev]}}
102-
103-
- env: BUILD=stack ARGS="--resolver lts-12 --stack-yaml stack-8.4.4.yaml"
104-
compiler: ": #stack 8.4.4"
105-
addons: {apt: {packages: [libgmp-dev]}}
106-
107-
- env: BUILD=stack ARGS="--resolver lts-13"
108-
compiler: ": #stack 8.6.3"
109-
addons: {apt: {packages: [libgmp-dev]}}
110-
111-
# Nightly builds are allowed to fail
112-
- env: BUILD=stack ARGS="--resolver nightly"
113-
compiler: ": #stack nightly"
114-
addons: {apt: {packages: [libgmp-dev]}}
115-
116-
# Build on macOS in addition to Linux
117-
- env: BUILD=stack ARGS=""
118-
compiler: ": #stack default osx"
119-
os: osx
120-
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-
- env: BUILD=stack ARGS="--resolver lts-11 --stack-yaml stack-8.2.2.yaml"
143-
compiler: ": #stack 8.2.2 osx"
144-
os: osx
145-
146-
- env: BUILD=stack ARGS="--resolver lts-12 --stack-yaml stack-8.4.4.yaml"
147-
compiler: ": #stack 8.4.4 osx"
148-
os: osx
149-
150-
- env: BUILD=stack ARGS="--resolver lts-13"
151-
compiler: ": #stack 8.6.3 osx"
152-
os: osx
153-
154-
- env: BUILD=stack ARGS="--resolver nightly"
155-
compiler: ": #stack nightly osx"
156-
os: osx
157-
158-
allow_failures:
159-
- env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7
160-
- env: BUILD=stack ARGS="--resolver nightly"
161-
162-
before_install:
163-
# Using compiler above sets CC to an invalid value, so unset it
164-
- unset CC
165-
166-
# We want to always allow newer versions of packages when building on GHC HEAD
167-
- CABALARGS=""
168-
- if [ "x$GHCVER" = "xhead" ]; then CABALARGS=--allow-newer; fi
169-
170-
# Download and unpack the stack executable
171-
- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:/opt/alex/$ALEXVER/bin:/opt/happy/$HAPPYVER/bin:$HOME/.cabal/bin:$PATH
172-
- mkdir -p ~/.local/bin
173-
- |
174-
if [ `uname` = "Darwin" ]
175-
then
176-
travis_retry curl --insecure -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin
177-
else
178-
travis_retry curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
179-
fi
180-
181-
# Use the more reliable S3 mirror of Hackage
182-
mkdir -p $HOME/.cabal
183-
echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config
184-
echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config
185-
186-
187-
install:
188-
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
189-
- if [ -f configure.ac ]; then autoreconf -i; fi
190-
- |
191-
set -ex
192-
case "$BUILD" in
193-
stack)
194-
# Add in extra-deps for older snapshots, as necessary
195-
#
196-
# This is disabled by default, as relying on the solver like this can
197-
# make builds unreliable. Instead, if you have this situation, it's
198-
# recommended that you maintain multiple stack-lts-X.yaml files.
199-
200-
#stack --no-terminal --install-ghc $ARGS test --bench --dry-run || ( \
201-
# stack --no-terminal $ARGS build cabal-install && \
202-
# stack --no-terminal $ARGS solver --update-config)
203-
204-
# Build the dependencies
205-
stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies
206-
;;
207-
cabal)
208-
cabal --version
209-
travis_retry cabal update
210-
211-
# Get the list of packages from the stack.yaml file. Note that
212-
# this will also implicitly run hpack as necessary to generate
213-
# the .cabal files needed by cabal-install.
214-
PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
8+
- stage: Integration Tests
9+
before_script:
10+
# Download and install kubectl
11+
- 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/
21512

216-
cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
217-
;;
218-
esac
219-
set +ex
13+
# Download and install kind
14+
- curl -LO https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-linux-amd64 && chmod +x kind-linux-amd64 && sudo mv kind-linux-amd64 /usr/local/bin/kind
22015

221-
script:
222-
- |
223-
set -ex
224-
case "$BUILD" in
225-
stack)
226-
stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
227-
;;
228-
cabal)
229-
cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
16+
# Create a new Kubernetes cluster using KinD
17+
- kind create cluster
23018

231-
ORIGDIR=$(pwd)
232-
for dir in $PACKAGES
233-
do
234-
cd $dir
235-
cabal check || [ "$CABALVER" == "1.16" ]
236-
cabal sdist
237-
PKGVER=$(cabal info . | awk '{print $2;exit}')
238-
SRC_TGZ=$PKGVER.tar.gz
239-
cd dist
240-
tar zxfv "$SRC_TGZ"
241-
cd "$PKGVER"
242-
cabal configure --enable-tests --ghc-options -O0
243-
cabal build
244-
if [ "$CABALVER" = "1.16" ] || [ "$CABALVER" = "1.18" ]; then
245-
cabal test
246-
else
247-
cabal test --show-details=streaming --log=/dev/stdout
248-
fi
249-
cd $ORIGDIR
250-
done
251-
;;
252-
esac
253-
set +ex
19+
# Set KUBECONFIG environment variable
20+
- export KUBECONFIG="$(kind get kubeconfig-path)"
21+
script: kubectl get pods -A

0 commit comments

Comments
 (0)