Skip to content

Commit 92c790d

Browse files
committed
Add GHC 8.10.1, update Cabal, Stack, Debian base.
Expand support matrix to include Debian Buster in addition to Stretch. The default Debian base will be Buster for both 8.8.3 and 8.10.1 (8.6.5 getting dropped). The GitHub Actions will now build/test the full matrix for pull requests. Remove examples as they don't work and are unsupported.
1 parent c767592 commit 92c790d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+210
-1096
lines changed

.github/workflows/ci.yml

+54-44
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,78 @@
11
name: Build and Smoke Test
22

33
on:
4-
push:
4+
pull_request:
5+
branches:
6+
- master
57

68
jobs:
79
ci:
810
if: github.repository == 'haskell/docker-haskell'
911
timeout-minutes: 30
1012
runs-on: ubuntu-18.04
13+
name: ${{ matrix.ghc }}-${{ matrix.deb }}
1114
strategy:
1215
fail-fast: false
1316
matrix:
14-
ghc: [8.6.5, 8.8.2, 8.8.3]
17+
ghc: ['8.8.3', '8.10.1']
18+
deb: ['stretch', 'buster']
1519
include:
16-
- ghc: 8.6.5
17-
ghc_minor: 8.6
18-
- ghc: 8.8.2
19-
ghc_minor: 8.8
20-
- ghc: 8.8.3
21-
ghc_minor: 8.8
20+
- ghc: '8.8.3'
21+
ghc_minor: '8.8'
22+
- ghc: '8.10.1'
23+
ghc_minor: '8.10'
2224
steps:
23-
- uses: actions/checkout@v2
24-
- name: docker build [${{ matrix.ghc }}]
25-
uses: nick-invision/retry@v1
26-
with:
27-
timeout_minutes: 8
28-
max_attempts: 3
29-
command: docker build --pull --build-arg GHC=${{ matrix.ghc }} -t haskell:${{ matrix.ghc }} ${{ matrix.ghc_minor }}
30-
- uses: actions/checkout@v2
31-
with:
32-
repository: docker-library/official-images
33-
path: official-images
34-
- name: run official-images tests
35-
run: ./official-images/test/run.sh haskell:${{ matrix.ghc }}
25+
- uses: actions/checkout@v2
26+
- name: docker build [${{ matrix.ghc }}]
27+
uses: nick-invision/retry@v1
28+
with:
29+
timeout_minutes: 8
30+
max_attempts: 3
31+
command: |
32+
docker build --pull \
33+
-t haskell:${{ matrix.ghc }}-${{ matrix.deb }} \
34+
-f ${{ matrix.ghc_minor }}/Dockerfile.${{ matrix.deb }} \
35+
${{ matrix.ghc_minor }}
36+
- uses: actions/checkout@v2
37+
with:
38+
repository: docker-library/official-images
39+
path: official-images
40+
- name: run official-images tests
41+
run: ./official-images/test/run.sh haskell:${{ matrix.ghc }}-${{ matrix.deb }}
3642

3743
ci-self-hosted:
3844
if: github.repository == 'psftw/docker-haskell-private'
3945
timeout-minutes: 20
4046
runs-on: self-hosted
47+
name: ${{ matrix.ghc }}-${{ matrix.deb }}
4148
strategy:
4249
fail-fast: false
4350
matrix:
44-
ghc: [8.6.5, 8.8.2, 8.8.3]
51+
ghc: ['8.8.3', '8.10.1']
52+
deb: ['stretch', 'buster']
4553
include:
46-
- ghc: 8.6.5
47-
ghc_minor: 8.6
48-
- ghc: 8.8.2
49-
ghc_minor: 8.8
50-
- ghc: 8.8.3
51-
ghc_minor: 8.8
54+
- ghc: '8.8.3'
55+
ghc_minor: '8.8'
56+
- ghc: '8.10.1'
57+
ghc_minor: '8.10'
5258
steps:
53-
- uses: actions/checkout@v2
54-
- name: docker build [${{ matrix.ghc }}]
55-
run: docker build --pull --build-arg GHC=${{ matrix.ghc }} -t haskell:${{ matrix.ghc }} ${{ matrix.ghc_minor }}
56-
- name: check for cabal-cache
57-
run: |
58-
docker volume inspect cabal-cache-${{ matrix.ghc }} &> /dev/null || \
59-
docker run -t --rm -v cabal-cache-${{ matrix.ghc }}:/root/.cabal haskell:${{ matrix.ghc }} cabal new-update
60-
- name: cabal new-install
61-
run: docker run -t --rm -v cabal-cache-${{ matrix.ghc }}:/root/.cabal haskell:${{ matrix.ghc }} cabal new-install --lib primitive
62-
- name: wipe stack cache
63-
run: docker volume rm stack-test-${{ matrix.ghc }}
64-
continue-on-error: true
65-
- name: stack new
66-
run: docker run -t --rm -v stack-test-${{ matrix.ghc }}:/stack -w /stack haskell:${{ matrix.ghc }} stack --resolver ghc-${{ matrix.ghc }} new testproject --bare
67-
- name: stack run
68-
run: docker run -t --rm -v stack-test-${{ matrix.ghc }}:/stack -w /stack haskell:${{ matrix.ghc }} stack run
59+
- uses: actions/checkout@v2
60+
- name: docker build [${{ matrix.ghc }}]
61+
run: |
62+
docker build --pull \
63+
-t haskell:${{ matrix.ghc }}-${{ matrix.deb }} \
64+
-f ${{ matrix.ghc_minor }}/Dockerfile.${{ matrix.deb }} \
65+
${{ matrix.ghc_minor }}
66+
- name: check for cabal-cache
67+
run: |
68+
docker volume inspect cabal-cache-${{ matrix.ghc }} &> /dev/null || \
69+
docker run -t --rm -v cabal-cache-${{ matrix.ghc }}:/root/.cabal haskell:${{ matrix.ghc }}-${{ matrix.deb }} cabal new-update
70+
- name: cabal new-install
71+
run: docker run -t --rm -v cabal-cache-${{ matrix.ghc }}:/root/.cabal haskell:${{ matrix.ghc }}-${{ matrix.deb }} cabal new-install --lib primitive
72+
- name: wipe stack cache
73+
run: docker volume rm stack-test-${{ matrix.ghc }}
74+
continue-on-error: true
75+
- name: stack new
76+
run: docker run -t --rm -v stack-test-${{ matrix.ghc }}:/stack -w /stack haskell:${{ matrix.ghc }}-${{ matrix.deb }} stack --resolver ghc-${{ matrix.ghc }} new testproject --bare
77+
- name: stack run
78+
run: docker run -t --rm -v stack-test-${{ matrix.ghc }}:/stack -w /stack haskell:${{ matrix.ghc }}-${{ matrix.deb }} stack run

8.10/Dockerfile.buster

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
FROM debian:buster
2+
3+
RUN apt-get update && \
4+
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr && \
5+
rm -rf /var/lib/apt/lists/*
6+
7+
ARG GHC=8.10.1
8+
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
9+
ARG CABAL_INSTALL=3.2
10+
ARG STACK=2.3.1
11+
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
12+
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
13+
14+
RUN export GNUPGHOME="$(mktemp -d)" && \
15+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
16+
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
17+
gpgconf --kill all && \
18+
echo 'deb http://downloads.haskell.org/debian buster main' > /etc/apt/sources.list.d/ghc.list && \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends \
21+
cabal-install-${CABAL_INSTALL} \
22+
curl \
23+
g++ \
24+
ghc-${GHC} \
25+
git \
26+
libsqlite3-dev \
27+
libtinfo-dev \
28+
make \
29+
netbase \
30+
openssh-client \
31+
xz-utils \
32+
zlib1g-dev && \
33+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
34+
35+
RUN export GNUPGHOME="$(mktemp -d)" && \
36+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_KEY} && \
37+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_RELEASE_KEY} && \
38+
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
39+
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
40+
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
41+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
42+
/usr/local/bin/stack config set system-ghc --global true && \
43+
/usr/local/bin/stack config set install-ghc --global false && \
44+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
45+
46+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
47+
48+
CMD ["ghci"]

8.10/Dockerfile.stretch

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
FROM debian:stretch
2+
3+
RUN apt-get update && \
4+
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr && \
5+
rm -rf /var/lib/apt/lists/*
6+
7+
ARG GHC=8.10.1
8+
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
9+
ARG CABAL_INSTALL=3.2
10+
ARG STACK=2.3.1
11+
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
12+
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
13+
14+
RUN export GNUPGHOME="$(mktemp -d)" && \
15+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
16+
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
17+
gpgconf --kill all && \
18+
echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends \
21+
cabal-install-${CABAL_INSTALL} \
22+
curl \
23+
g++ \
24+
ghc-${GHC} \
25+
git \
26+
libsqlite3-dev \
27+
libtinfo-dev \
28+
make \
29+
netbase \
30+
openssh-client \
31+
xz-utils \
32+
zlib1g-dev && \
33+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
34+
35+
RUN export GNUPGHOME="$(mktemp -d)" && \
36+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_KEY} && \
37+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_RELEASE_KEY} && \
38+
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
39+
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
40+
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
41+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
42+
/usr/local/bin/stack config set system-ghc --global true && \
43+
/usr/local/bin/stack config set install-ghc --global false && \
44+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
45+
46+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
47+
48+
CMD ["ghci"]

8.8/Dockerfile.buster

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
FROM debian:buster
2+
3+
RUN apt-get update && \
4+
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr && \
5+
rm -rf /var/lib/apt/lists/*
6+
7+
ARG GHC=8.8.3
8+
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
9+
ARG CABAL_INSTALL=3.2
10+
ARG STACK=2.3.1
11+
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
12+
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
13+
14+
RUN export GNUPGHOME="$(mktemp -d)" && \
15+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
16+
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
17+
gpgconf --kill all && \
18+
echo 'deb http://downloads.haskell.org/debian buster main' > /etc/apt/sources.list.d/ghc.list && \
19+
apt-get update && \
20+
apt-get install -y --no-install-recommends \
21+
cabal-install-${CABAL_INSTALL} \
22+
curl \
23+
g++ \
24+
ghc-${GHC} \
25+
git \
26+
libsqlite3-dev \
27+
libtinfo-dev \
28+
make \
29+
netbase \
30+
openssh-client \
31+
xz-utils \
32+
zlib1g-dev && \
33+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
34+
35+
RUN export GNUPGHOME="$(mktemp -d)" && \
36+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_KEY} && \
37+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_RELEASE_KEY} && \
38+
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
39+
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
40+
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \
41+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 && \
42+
/usr/local/bin/stack config set system-ghc --global true && \
43+
/usr/local/bin/stack config set install-ghc --global false && \
44+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/* /stack.tar.gz.asc /stack.tar.gz
45+
46+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/cabal/${CABAL_INSTALL}/bin:/opt/ghc/${GHC}/bin:$PATH
47+
48+
CMD ["ghci"]

8.8/Dockerfile renamed to 8.8/Dockerfile.stretch

+12-6
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ RUN apt-get update && \
55
rm -rf /var/lib/apt/lists/*
66

77
ARG GHC=8.8.3
8-
ARG STACK=2.1.3
9-
ARG CABAL_INSTALL=3.0
8+
ARG DEBIAN_KEY=427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574
9+
ARG CABAL_INSTALL=3.2
10+
ARG STACK=2.3.1
11+
ARG STACK_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
12+
ARG STACK_RELEASE_KEY=2C6A674E85EE3FB896AFC9B965101FF31C5C154D
1013

11-
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 427CB69AAC9D00F2A43CAF1CBA3CBA3FFE22B574 && \
14+
RUN export GNUPGHOME="$(mktemp -d)" && \
15+
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys ${DEBIAN_KEY} && \
16+
gpg --batch --armor --export ${DEBIAN_KEY} > /etc/apt/trusted.gpg.d/haskell.org.gpg.asc && \
17+
gpgconf --kill all && \
1218
echo 'deb http://downloads.haskell.org/debian stretch main' > /etc/apt/sources.list.d/ghc.list && \
1319
apt-get update && \
1420
apt-get install -y --no-install-recommends \
@@ -24,11 +30,11 @@ RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 427CB69AAC9D00F2A43
2430
openssh-client \
2531
xz-utils \
2632
zlib1g-dev && \
27-
rm -rf /var/lib/apt/lists/*
33+
rm -rf "$GNUPGHOME" /var/lib/apt/lists/*
2834

2935
RUN export GNUPGHOME="$(mktemp -d)" && \
30-
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys C5705533DA4F78D8664B5DC0575159689BEFB442 && \
31-
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 2C6A674E85EE3FB896AFC9B965101FF31C5C154D && \
36+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_KEY} && \
37+
gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys ${STACK_RELEASE_KEY} && \
3238
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz -o stack.tar.gz && \
3339
curl -fSL https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-x86_64.tar.gz.asc -o stack.tar.gz.asc && \
3440
gpg --batch --trusted-key 0x575159689BEFB442 --verify stack.tar.gz.asc stack.tar.gz && \

examples/7.10/snap/.dockerignore

-1
This file was deleted.

examples/7.10/snap/.ghci

-4
This file was deleted.

examples/7.10/snap/Dockerfile

-19
This file was deleted.

examples/7.10/snap/site_key.txt

-96 Bytes
Binary file not shown.

examples/7.10/snap/snap-example.cabal

-63
This file was deleted.

0 commit comments

Comments
 (0)