on master help sign in
Add Azure
commit8e1a28219a15a4740389209609e79acb7af5165b authorMichael Snoyman <michael@snoyman.com> dateSat 30 Mar 2019, 21:01 (8 years ago) parent27b9728
4 files changed+231
.azure/azure-linux-template.yml+119 .azure/azure-osx-template.yml+41 .azure/azure-pipelines.yml+30 .azure/azure-windows-template.yml+41
.azure/azure-linux-template.ymlnew file+119
@@ -0,0 +1,119 @@
1+jobs:
2+- job: ${{ parameters.name }}
3+ pool:
4+ vmImage: ${{ parameters.vmImage }}
5+ strategy:
6+ matrix:
7+ stack-def:
8+ BUILD: stack
9+ STACK_YAML: stack.yaml
10+ stack-lts-6:
11+ BUILD: stack
12+ STACK_YAML: stack-lts-6.yaml
13+ ARGS: "--resolver lts-6"
14+ stack-lts-9:
15+ BUILD: stack
16+ STACK_YAML: stack-lts-9.yaml
17+ ARGS: "--resolver lts-9"
18+ stack-lts-11:
19+ BUILD: stack
20+ STACK_YAML: stack-lts-11.yaml
21+ ARGS: "--resolver lts-11"
22+ stack-lts-12:
23+ BUILD: stack
24+ STACK_YAML: stack-lts-12.yaml
25+ ARGS: "--resolver lts-12"
26+ stack-lts-13:
27+ BUILD: stack
28+ STACK_YAML: stack.yaml
29+ ARGS: "--resolver lts-13"
30+ cabal-7.10.3:
31+ BUILD: cabal
32+ GHCVER: 7.10.3
33+ CABALVER: 1.22
34+ cabal-8.0.2:
35+ BUILD: cabal
36+ GHCVER: 8.0.2
37+ CABALVER: 1.24
38+ cabal-8.2.2:
39+ BUILD: cabal
40+ GHCVER: 8.4.4
41+ CABALVER: 2.0
42+ cabal-8.4.4:
43+ BUILD: cabal
44+ GHCVER: 8.4.4
45+ CABALVER: 2.2
46+ cabal-8.6.4:
47+ BUILD: cabal
48+ GHCVER: 8.6.4
49+ CABALVER: 2.4
50+ nightly:
51+ BUILD: stack
52+ STACK_YAML: stack-nightly.yaml
53+ ARGS: "--resolver nightly"
54+ pedantic:
55+ BUILD: pedantic
56+ STACK_YAML: stack.yaml
57+ maxParallel: 6
58+ steps:
59+ - script: |
60+ export STACK_ROOT="$(Build.SourcesDirectory)"/.stack-root;
61+ mkdir -p ~/.local/bin
62+ curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
63+ case "$BUILD" in
64+ cabal)
65+ sudo add-apt-repository -y ppa:hvr/ghc
66+ sudo apt-get update
67+ sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER
68+ # See note here: https://github.com/haskell-CI/haskell-ci#alex--happy-with-ghc--78
69+ if [ "$GHCVER" = "head" ] || [ "${GHCVER%.*}" = "7.8" ] || [ "${GHCVER%.*}" = "7.10" ]; then
70+ sudo apt-get install happy-1.19.4 alex-3.1.3
71+ export PATH=/opt/alex/3.1.3/bin:/opt/happy/1.19.4/bin:$PATH
72+ else
73+ sudo apt-get install happy alex
74+ fi
75+ export PATH=$HOME/.local/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
76+ cabal --version
77+ cabal update
78+ PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
79+ cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
80+ ;;
81+ *)
82+ export PATH=$HOME/.local/bin:$PATH
83+ stack --install-ghc $ARGS test --bench --only-dependencies
84+ ;;
85+ esac
86+ set -ex
87+ case "$BUILD" in
88+ cabal)
89+ cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
90+
91+ ORIGDIR=$(pwd)
92+ for dir in $PACKAGES
93+ do
94+ cd $dir
95+ cabal check || [ "$CABALVER" == "1.16" ]
96+ cabal sdist
97+ PKGVER=$(cabal info . | awk '{print $2;exit}')
98+ SRC_TGZ=$PKGVER.tar.gz
99+ cd dist
100+ tar zxfv "$SRC_TGZ"
101+ cd "$PKGVER"
102+ cabal configure --enable-tests --ghc-options -O0
103+ cabal build
104+ if [ "$CABALVER" = "1.16" ] || [ "$CABALVER" = "1.18" ]; then
105+ cabal test
106+ else
107+ cabal test --show-details=streaming
108+ fi
109+ cd $ORIGDIR
110+ done
111+ ;;
112+ *)
113+ stack $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
114+ ;;
115+ esac
116+ set +ex
117+ env:
118+ OS_NAME: ${{ parameters.os }}
119+ displayName: 'Installation ${{parameters.os}} & Test'
.azure/azure-osx-template.ymlnew file+41
@@ -0,0 +1,41 @@
1+jobs:
2+- job: ${{ parameters.name }}
3+ pool:
4+ vmImage: ${{ parameters.vmImage }}
5+ strategy:
6+ matrix:
7+ stack-def:
8+ BUILD: stack
9+ STACK_YAML: stack.yaml
10+ stack-lts-6:
11+ BUILD: stack
12+ STACK_YAML: stack-lts-6.yaml
13+ ARGS: "--resolver lts-6"
14+ stack-lts-9:
15+ BUILD: stack
16+ STACK_YAML: stack-lts-9.yaml
17+ ARGS: "--resolver lts-9"
18+ stack-lts-11:
19+ BUILD: stack
20+ STACK_YAML: stack-lts-11.yaml
21+ ARGS: "--resolver lts-11"
22+ stack-lts-12:
23+ BUILD: stack
24+ STACK_YAML: stack-lts-12.yaml
25+ ARGS: "--resolver lts-12"
26+ stack-lts-13:
27+ BUILD: stack
28+ STACK_YAML: stack.yaml
29+ ARGS: "--resolver lts-13"
30+ maxParallel: 3
31+ steps:
32+ - script: |
33+ export STACK_ROOT="$(Build.SourcesDirectory)"/.stack-root;
34+ mkdir -p ~/.local/bin
35+ curl -skL https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin;
36+ export PATH=$HOME/.local/bin:$PATH
37+ stack --install-ghc $ARGS test --bench --only-dependencies
38+ stack $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
39+ env:
40+ OS_NAME: ${{ parameters.os }}
41+ displayName: 'Installation ${{parameters.os}} & Test'
.azure/azure-pipelines.ymlnew file+30
@@ -0,0 +1,30 @@
1+# This is the complex Azure 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/azure_ci/
7+#
8+# Copy these contents into the root directory of your Github project in a file
9+# named azure-pipelines.yml
10+#
11+# For better organization, you split various jobs into seprate parts
12+# and each of them are controlled via individual file.
13+jobs:
14+- template: azure-linux-template.yml
15+ parameters:
16+ name: Linux
17+ vmImage: ubuntu-16.04
18+ os: linux
19+
20+- template: azure-osx-template.yml
21+ parameters:
22+ name: macOS
23+ vmImage: macOS-10.13
24+ os: osx
25+
26+- template: azure-windows-template.yml
27+ parameters:
28+ name: Windows
29+ vmImage: vs2017-win2016
30+ os: windows
.azure/azure-windows-template.ymlnew file+41
@@ -0,0 +1,41 @@
1+jobs:
2+- job: ${{ parameters.name }}
3+ pool:
4+ vmImage: ${{ parameters.vmImage }}
5+ strategy:
6+ matrix:
7+ stack-def:
8+ BUILD: stack
9+ STACK_YAML: stack.yaml
10+ stack-lts-6:
11+ BUILD: stack
12+ STACK_YAML: stack-lts-6.yaml
13+ ARGS: "--resolver lts-6"
14+ stack-lts-9:
15+ BUILD: stack
16+ STACK_YAML: stack-lts-9.yaml
17+ ARGS: "--resolver lts-9"
18+ stack-lts-11:
19+ BUILD: stack
20+ STACK_YAML: stack-lts-11.yaml
21+ ARGS: "--resolver lts-11"
22+ stack-lts-12:
23+ BUILD: stack
24+ STACK_YAML: stack-lts-12.yaml
25+ ARGS: "--resolver lts-12"
26+ stack-lts-13:
27+ BUILD: stack
28+ STACK_YAML: stack.yaml
29+ ARGS: "--resolver lts-13"
30+ maxParallel: 3
31+ steps:
32+ - bash: |
33+ export STACK_ROOT="$(Build.SourcesDirectory)"/.stack-root;
34+ curl -sSkL http://www.stackage.org/stack/windows-x86_64 -o /usr/bin/stack.zip
35+ unzip -o /usr/bin/stack.zip -d /usr/bin/
36+ stack setup $ARGS > /dev/null
37+ stack --install-ghc $ARGS test --bench --only-dependencies
38+ stack $ARGS test --bench --no-run-benchmarks
39+ env:
40+ OS_NAME: ${{ parameters.os }}
41+ displayName: 'Installation ${{parameters.os}} & Test'