@@ -4,79 +4,120 @@ on: [push]
4
4
5
5
jobs :
6
6
build :
7
- runs-on : ubuntu-18.04
7
+ runs-on : ${{ matrix.os }}
8
+
9
+ defaults :
10
+ run :
11
+ shell : bash
12
+
13
+ strategy :
14
+ fail-fast : false
15
+ matrix :
16
+ ghc : ["8.6.5"]
17
+ os : [ubuntu-latest, windows-latest]
8
18
9
19
steps :
10
20
- uses : actions/checkout@v1
11
21
12
- - name : Debugging
13
- env :
14
- BINARY_CACHE_REGION : ${{ secrets.BINARY_CACHE_REGION }}
15
- BINARY_CACHE_THREADS : ${{ secrets.BINARY_CACHE_THREADS }}
16
- BINARY_CACHE_URI : ${{ secrets.BINARY_CACHE_URI }}
22
+ - name : Select build directory
23
+ run : echo "CABAL_BUILDDIR=dist" >> $GITHUB_ENV
24
+
25
+ - name : Install pkgconfiglite
26
+ if : matrix.os == 'windows-latest'
27
+ run : choco install -y pkgconfiglite
28
+
29
+ - name : Install libsodium
30
+ if : matrix.os == 'windows-latest'
17
31
run : |
18
- echo "BINARY_CACHE_REGION: $BINARY_CACHE_REGION"
19
- echo "BINARY_CACHE_THREADS: $BINARY_CACHE_THREADS"
20
- echo "BINARY_CACHE_URI: $BINARY_CACHE_URI"
32
+ curl -Ls https://download.libsodium.org/libsodium/releases/libsodium-1.0.18-mingw.tar.gz -o libsodium-1.0.18-mingw.tar.gz
33
+ tar zxvf libsodium-1.0.18-mingw.tar.gz
34
+
35
+ sed -i "s|/d/a/1/s/|D:/a/cardano-node/cardano-node/|g" libsodium-win64/lib/pkgconfig/libsodium.pc
36
+
37
+ export PKG_CONFIG_PATH="$(readlink -f libsodium-win64/lib/pkgconfig)"
38
+ echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> $GITHUB_ENV
21
39
22
-
40
+ export LIBSODIUM_PATH="$(readlink -f libsodium-win64/bin | sed 's|^/d|D:|g' | tr / '\\')"
41
+ echo "LIBSODIUM_PATH=$LIBSODIUM_PATH"
42
+ echo "$LIBSODIUM_PATH" >> $GITHUB_PATH
43
+
44
+ - name : Configure to use libsodium
45
+ run : |
46
+ cat >> cabal.project <<EOF
47
+ package cardano-crypto-praos
48
+ flags: -external-libsodium-vrf
49
+ EOF
50
+
51
+ - uses : actions/setup-haskell@v1
52
+ id : setup-haskell
23
53
with :
24
- ghc-version : ' 8.6.5 '
25
- cabal-version : ' 3.4 .0.0'
54
+ ghc-version : ${{ matrix.ghc }}
55
+ cabal-version : ' 3.2 .0.0'
26
56
27
57
- name : Install build environment
58
+ if : matrix.os == 'ubuntu-latest'
28
59
run : |
29
60
sudo apt-get update
30
61
sudo apt-get -y install libsodium23 libsodium-dev
31
62
sudo apt-get -y install libsystemd0 libsystemd-dev
32
63
sudo apt-get -y remove --purge software-properties-common
33
64
sudo apt-get -y autoremove
34
65
35
- cat >> cabal.project <<EOF
36
- package cardano-crypto-praos
37
- flags: -external-libsodium-vrf
38
- EOF
39
-
40
- - name : Install cabal-cache tool
41
- run : |
42
- CACHE_TOOL_TAG=$(curl -s -X GET https://api.github.com/repos/haskell-works/cabal-cache/releases/latest | jq -rc .tag_name)
43
- echo "Downloading: https://github.com/haskell-works/cabal-cache/releases/download/${CACHE_TOOL_TAG}/cabal-cache_x86_64_linux.tar.gz"
44
- curl -Ls https://github.com/haskell-works/cabal-cache/releases/download/${CACHE_TOOL_TAG}/cabal-cache_x86_64_linux.tar.gz | tar -xvz -C /tmp/
45
- sudo cp /tmp/cabal-cache /usr/local/bin/cabal-cache
46
- cabal-cache version
47
-
48
66
- name : Cabal update
49
67
run : cabal update
50
68
51
69
- name : Cabal Configure
52
- run : cabal configure
70
+ run : cabal configure --builddir="$CABAL_BUILDDIR" --enable-tests --enable-benchmarks --write-ghc-environment-files=always
53
71
54
72
- name : Restore cabal cache
73
+ uses : haskell-works/cabal-cache-action@v1
55
74
env :
56
75
AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
57
76
AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
58
77
BINARY_CACHE_REGION : ${{ secrets.BINARY_CACHE_REGION }}
59
78
BINARY_CACHE_THREADS : ${{ secrets.BINARY_CACHE_THREADS }}
60
79
BINARY_CACHE_URI : ${{ secrets.BINARY_CACHE_URI }}
61
- run : |
62
- cabal-cache sync-from-archive \
63
- --threads "$BINARY_CACHE_THREADS" \
64
- --archive-uri "$BINARY_CACHE_URI" \
65
- --region "$BINARY_CACHE_REGION"
80
+ with :
81
+ args : |
82
+ sync-from-archive \
83
+ --threads "$BINARY_CACHE_THREADS" \
84
+ --archive-uri "$BINARY_CACHE_URI" \
85
+ --region "$BINARY_CACHE_REGION" \
86
+ --build-path "$CABAL_BUILDDIR" \
87
+ --store-path "${{ steps.setup-haskell.outputs.cabal-store }}"
66
88
67
89
- name : Install dependencies
68
- run : cabal build all --enable-tests --enable-benchmarks --write-ghc-environment-files=always --only-dependencies
90
+ run : cabal build all --builddir="$CABAL_BUILDDIR" --only-dependencies
69
91
70
92
- name : Build
71
- run : cabal build all --enable-tests --enable-benchmarks --write-ghc-environment-files=always
93
+ run : cabal build cardano-node cardano-cli cardano-node-chairman --builddir="$CABAL_BUILDDIR"
94
+
95
+ - name : Save cabal cache
96
+ uses : haskell-works/cabal-cache-action@v1
97
+ if : ${{ always() }}
98
+ env :
99
+ AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
100
+ AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
101
+ BINARY_CACHE_REGION : ${{ secrets.BINARY_CACHE_REGION }}
102
+ BINARY_CACHE_THREADS : ${{ secrets.BINARY_CACHE_THREADS }}
103
+ BINARY_CACHE_URI : ${{ secrets.BINARY_CACHE_URI }}
104
+ with :
105
+ args : |
106
+ sync-to-archive \
107
+ --threads "$BINARY_CACHE_THREADS" \
108
+ --archive-uri "$BINARY_CACHE_URI" \
109
+ --region "$BINARY_CACHE_REGION" \
110
+ --build-path "$CABAL_BUILDDIR" \
111
+ --store-path "${{ steps.setup-haskell.outputs.cabal-store }}"
72
112
73
113
- name : Git clone
74
114
run : git clone https://github.com/input-output-hk/cardano-mainnet-mirror
75
115
76
116
- name : Run tests
77
- run : cabal test cardano-cli cardano-node cardano-node-chairman --enable-tests --enable-benchmarks --write-ghc-environment-files=always --test-show-details=direct --test-options='+RTS -g1'
117
+ run : cabal test --builddir="$CABAL_BUILDDIR" cardano-node-chairman
78
118
79
119
- name : Save cabal cache
120
+ uses : haskell-works/cabal-cache-action@v1
80
121
if : ${{ always() }}
81
122
env :
82
123
AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
@@ -85,8 +126,11 @@ jobs:
85
126
BINARY_CACHE_THREADS : ${{ secrets.BINARY_CACHE_THREADS }}
86
127
BINARY_CACHE_URI : ${{ secrets.BINARY_CACHE_URI }}
87
128
CARDANO_MAINNET_MIRROR : cardano-mainnet-mirror/epoch
88
- run : |
89
- cabal-cache sync-to-archive \
90
- --threads "$BINARY_CACHE_THREADS" \
91
- --archive-uri "$BINARY_CACHE_URI" \
92
- --region "$BINARY_CACHE_REGION"
129
+ with :
130
+ args : |
131
+ sync-to-archive \
132
+ --threads "$BINARY_CACHE_THREADS" \
133
+ --archive-uri "$BINARY_CACHE_URI" \
134
+ --region "$BINARY_CACHE_REGION" \
135
+ --build-path "$CABAL_BUILDDIR" \
136
+ --store-path "${{ steps.setup-haskell.outputs.cabal-store }}"
0 commit comments