Skip to content

Commit c93b030

Browse files
committedJan 19, 2021
Replace Travis-CI configuration with Github actions.
1 parent 3ff6878 commit c93b030

File tree

2 files changed

+185
-149
lines changed

2 files changed

+185
-149
lines changed
 

‎.github/workflows/haskell-ci.yml

+185
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,185 @@
1+
# This GitHub workflow config has been generated by a script via
2+
#
3+
# haskell-ci '--hlint' '--doctest' '--doctest-options=-i ../dist-newstyle/build/*/*/cabal2nix-*/build/autogen' 'github' 'cabal2nix.cabal'
4+
#
5+
# To regenerate the script (for example after adjusting tested-with) run
6+
#
7+
# haskell-ci regenerate
8+
#
9+
# For more information, see https://github.com/haskell-CI/haskell-ci
10+
#
11+
# version: 0.11.20210111
12+
#
13+
# REGENDATA ("0.11.20210111",["--hlint","--doctest","--doctest-options=-i ../dist-newstyle/build/*/*/cabal2nix-*/build/autogen","github","cabal2nix.cabal"])
14+
#
15+
name: Haskell-CI
16+
on:
17+
- push
18+
- pull_request
19+
jobs:
20+
linux:
21+
name: Haskell-CI Linux - GHC ${{ matrix.ghc }}
22+
runs-on: ubuntu-18.04
23+
container:
24+
image: buildpack-deps:bionic
25+
continue-on-error: ${{ matrix.allow-failure }}
26+
strategy:
27+
matrix:
28+
include:
29+
- ghc: 8.10.3
30+
allow-failure: false
31+
fail-fast: false
32+
steps:
33+
- name: apt
34+
run: |
35+
apt-get update
36+
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common
37+
apt-add-repository -y 'ppa:hvr/ghc'
38+
apt-get update
39+
apt-get install -y ghc-$GHC_VERSION cabal-install-3.2
40+
env:
41+
GHC_VERSION: ${{ matrix.ghc }}
42+
- name: Set PATH and environment variables
43+
run: |
44+
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
45+
echo "LANG=C.UTF-8" >> $GITHUB_ENV
46+
echo "CABAL_DIR=$HOME/.cabal" >> $GITHUB_ENV
47+
echo "CABAL_CONFIG=$HOME/.cabal/config" >> $GITHUB_ENV
48+
HC=/opt/ghc/$GHC_VERSION/bin/ghc
49+
echo "HC=$HC" >> $GITHUB_ENV
50+
echo "HCPKG=/opt/ghc/$GHC_VERSION/bin/ghc-pkg" >> $GITHUB_ENV
51+
echo "HADDOCK=/opt/ghc/$GHC_VERSION/bin/haddock" >> $GITHUB_ENV
52+
echo "CABAL=/opt/cabal/3.2/bin/cabal -vnormal+nowrap" >> $GITHUB_ENV
53+
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
54+
echo "HCNUMVER=$HCNUMVER" >> $GITHUB_ENV
55+
echo "ARG_TESTS=--enable-tests" >> $GITHUB_ENV
56+
echo "ARG_BENCH=--enable-benchmarks" >> $GITHUB_ENV
57+
echo "ARG_COMPILER=--ghc --with-compiler=/opt/ghc/$GHC_VERSION/bin/ghc" >> $GITHUB_ENV
58+
echo "GHCJSARITH=0" >> $GITHUB_ENV
59+
env:
60+
GHC_VERSION: ${{ matrix.ghc }}
61+
- name: env
62+
run: |
63+
env
64+
- name: write cabal config
65+
run: |
66+
mkdir -p $CABAL_DIR
67+
cat >> $CABAL_CONFIG <<EOF
68+
remote-build-reporting: anonymous
69+
write-ghc-environment-files: never
70+
remote-repo-cache: $CABAL_DIR/packages
71+
logs-dir: $CABAL_DIR/logs
72+
world-file: $CABAL_DIR/world
73+
extra-prog-path: $CABAL_DIR/bin
74+
symlink-bindir: $CABAL_DIR/bin
75+
installdir: $CABAL_DIR/bin
76+
build-summary: $CABAL_DIR/logs/build.log
77+
store-dir: $CABAL_DIR/store
78+
install-dirs user
79+
prefix: $CABAL_DIR
80+
repository hackage.haskell.org
81+
url: http://hackage.haskell.org/
82+
EOF
83+
cat $CABAL_CONFIG
84+
- name: versions
85+
run: |
86+
$HC --version || true
87+
$HC --print-project-git-commit-id || true
88+
$CABAL --version || true
89+
- name: update cabal index
90+
run: |
91+
$CABAL v2-update -v
92+
- name: cache (tools)
93+
uses: actions/cache@v2
94+
with:
95+
key: ${{ runner.os }}-${{ matrix.ghc }}-tools-0f48a857
96+
path: ~/.haskell-ci-tools
97+
- name: install cabal-plan
98+
run: |
99+
mkdir -p $HOME/.cabal/bin
100+
curl -sL https://github.com/haskell-hvr/cabal-plan/releases/download/v0.6.2.0/cabal-plan-0.6.2.0-x86_64-linux.xz > cabal-plan.xz
101+
echo 'de73600b1836d3f55e32d80385acc055fd97f60eaa0ab68a755302685f5d81bc cabal-plan.xz' | sha256sum -c -
102+
xz -d < cabal-plan.xz > $HOME/.cabal/bin/cabal-plan
103+
rm -f cabal-plan.xz
104+
chmod a+x $HOME/.cabal/bin/cabal-plan
105+
cabal-plan --version
106+
- name: install doctest
107+
run: |
108+
$CABAL --store-dir=$HOME/.haskell-ci-tools/store v2-install $ARG_COMPILER --ignore-project -j2 doctest --constraint='doctest ^>=0.17'
109+
doctest --version
110+
- name: install hlint
111+
run: |
112+
HLINTVER=$(cd /tmp && (${CABAL} v2-install -v $ARG_COMPILER --dry-run hlint --constraint='hlint ==3.2.*' | perl -ne 'if (/\bhlint-(\d+(\.\d+)*)\b/) { print "$1"; last; }')); echo "HLint version $HLINTVER"
113+
if [ ! -e $HOME/.haskell-ci-tools/hlint-$HLINTVER/hlint ]; then echo "Downloading HLint version $HLINTVER"; mkdir -p $HOME/.haskell-ci-tools; curl --write-out 'Status Code: %{http_code} Redirects: %{num_redirects} Total time: %{time_total} Total Dsize: %{size_download}\n' --silent --location --output $HOME/.haskell-ci-tools/hlint-$HLINTVER.tar.gz "https://github.com/ndmitchell/hlint/releases/download/v$HLINTVER/hlint-$HLINTVER-x86_64-linux.tar.gz"; tar -xzv -f $HOME/.haskell-ci-tools/hlint-$HLINTVER.tar.gz -C $HOME/.haskell-ci-tools; fi
114+
mkdir -p $CABAL_DIR/bin && ln -sf "$HOME/.haskell-ci-tools/hlint-$HLINTVER/hlint" $CABAL_DIR/bin/hlint
115+
hlint --version
116+
- name: checkout
117+
uses: actions/checkout@v2
118+
with:
119+
path: source
120+
- name: sdist
121+
run: |
122+
mkdir -p sdist
123+
cd source || false
124+
$CABAL sdist all --output-dir $GITHUB_WORKSPACE/sdist
125+
- name: unpack
126+
run: |
127+
mkdir -p unpacked
128+
find sdist -maxdepth 1 -type f -name '*.tar.gz' -exec tar -C $GITHUB_WORKSPACE/unpacked -xzvf {} \;
129+
- name: generate cabal.project
130+
run: |
131+
PKGDIR_cabal2nix="$(find "$GITHUB_WORKSPACE/unpacked" -maxdepth 1 -type d -regex '.*/cabal2nix-[0-9.]*')"
132+
echo "PKGDIR_cabal2nix=${PKGDIR_cabal2nix}" >> $GITHUB_ENV
133+
touch cabal.project
134+
touch cabal.project.local
135+
echo "packages: ${PKGDIR_cabal2nix}" >> cabal.project
136+
echo "package cabal2nix" >> cabal.project
137+
echo " ghc-options: -Werror=missing-methods" >> cabal.project
138+
cat >> cabal.project <<EOF
139+
EOF
140+
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(cabal2nix)$/; }' >> cabal.project.local
141+
cat cabal.project
142+
cat cabal.project.local
143+
- name: dump install plan
144+
run: |
145+
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
146+
cabal-plan
147+
- name: cache
148+
uses: actions/cache@v2
149+
with:
150+
key: ${{ runner.os }}-${{ matrix.ghc }}-${{ github.sha }}
151+
path: ~/.cabal/store
152+
restore-keys: ${{ runner.os }}-${{ matrix.ghc }}-
153+
- name: install dependencies
154+
run: |
155+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks --dependencies-only -j2 all
156+
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dependencies-only -j2 all
157+
- name: build w/o tests
158+
run: |
159+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
160+
- name: build
161+
run: |
162+
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
163+
- name: tests
164+
run: |
165+
$CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
166+
- name: doctest
167+
run: |
168+
cd ${PKGDIR_cabal2nix} || false
169+
doctest -i ../dist-newstyle/build/*/*/cabal2nix-*/build/autogen src
170+
- name: hlint
171+
run: |
172+
(cd ${PKGDIR_cabal2nix} && hlint src)
173+
(cd ${PKGDIR_cabal2nix} && hlint hackage2nix)
174+
(cd ${PKGDIR_cabal2nix} && hlint cabal2nix)
175+
- name: cabal check
176+
run: |
177+
cd ${PKGDIR_cabal2nix} || false
178+
${CABAL} -vnormal check
179+
- name: haddock
180+
run: |
181+
$CABAL v2-haddock $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
182+
- name: unconstrained build
183+
run: |
184+
rm -f cabal.project.local
185+
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all

‎.travis.yml

-149
This file was deleted.

0 commit comments

Comments
 (0)
Please sign in to comment.