-
Notifications
You must be signed in to change notification settings - Fork 5
113 lines (110 loc) · 3.92 KB
/
haskell.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
name: Haskell CI
on:
workflow_call:
outputs:
MAESTRO_SDK_VERSION:
description: "MAESTRO_SDK_VERSION"
value: ${{ jobs.build.outputs.MAESTRO_SDK_VERSION }}
permissions:
contents: read
jobs:
build:
runs-on: ubuntu-22.04
environment: build
outputs:
MAESTRO_SDK_VERSION: ${{ steps.get_maestro_sdk_version.outputs.MAESTRO_SDK_VERSION }}
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Install dependencies (apt-get)
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
autoconf \
automake \
build-essential \
ca-certificates \
chrony \
dpkg-dev \
gcc \
gnupg \
g++ \
hlint \
libc6-dev \
libncursesw5 \
libffi-dev \
libgmp-dev \
liblzma-dev \
libnuma-dev \
libpq-dev \
libssl-dev \
libsystemd-dev \
libtinfo-dev \
libtool \
netbase \
pkg-config \
procps \
tmux \
xz-utils \
zlib1g-dev
- name: Setup haskell tooling
uses: haskell/actions/setup@v2
with:
ghc-version: '8.10.7'
cabal-version: '3.8'
enable-stack: true
stack-version: '2.9'
- name: Setup cache
uses: actions/cache@v3
env:
cache-name: cache-cabal
with:
path: ~/.cabal
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/*.cabal') }}-${{ hashFiles('**/cabal.project') }}
restore-keys: |
${{ runner.os }}-build-${{ env.cache-name }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Update dependencies (cabal)
run: cabal v2-update
- name: Build dependencies (cabal)
run: cabal v2-build --only-dependencies --enable-tests --enable-benchmarks
- name: Build all targets (cabal)
run: cabal v2-build --enable-tests --enable-benchmarks all
# - name: Run all tests (cabal)
# run: cabal v2-test maestro-sdk-tests
- name: Run doctest (docspec)
run: |
# Install docspec and run doctests.
echo "=========================[ INSTALL DOCSPEC ]========================"
echo " -> Started at $(date --iso-8601=seconds --utc)."
curl -sL https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20211114/cabal-docspec-0.0.0.20211114.xz > ./cabal-docspec.xz
xz -d < ./cabal-docspec.xz > ./cabal-docspec
rm -f ./cabal-docspec.xz
chmod a+x ./cabal-docspec
echo " -> Docspec has been installed."
echo "===========================[ RUN DOCSPEC ]==========================="
./cabal-docspec
echo " ============================[ FINISHED ]============================"
- name: Run checks (cabal)
run: cabal check
- name: Create source distribution file (cabal)
run: cabal sdist
- name: Identify maestro sdk version (cabal)
id: get_maestro_sdk_version
run: |
export MAESTRO_SDK_VERSION=$(cabal info . | awk '{print $2 ;exit}') ;
echo "MAESTRO_SDK_VERSION: $MAESTRO_SDK_VERSION"
echo "MAESTRO_SDK_VERSION=${MAESTRO_SDK_VERSION}" >> $GITHUB_ENV
echo "MAESTRO_SDK_VERSION=${MAESTRO_SDK_VERSION}" >> $GITHUB_OUTPUT
- name: Generate documentation (cabal haddock)
run: cabal haddock --html --hyperlink-source --haddock-options="--use-unicode"
- name: Upload haddock documentation
uses: actions/[email protected]
with:
path: ./dist-newstyle/build/x86_64-linux/ghc-8.10.7/${{env.MAESTRO_SDK_VERSION}}/doc/html/maestro-sdk/
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: source-distribution-file
path: ./dist-newstyle/sdist/${{env.MAESTRO_SDK_VERSION}}.tar.gz