Skip to content

Commit 356c3f2

Browse files
committed
Add alpine based images
1 parent 23abb31 commit 356c3f2

File tree

5 files changed

+515
-0
lines changed

5 files changed

+515
-0
lines changed

.github/workflows/alpine.yml

+43
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Validate Alpine
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- master
7+
paths:
8+
- '**/alpine*/Dockerfile'
9+
- '.github/workflows/alpine.yml'
10+
11+
jobs:
12+
build-smoke-test:
13+
timeout-minutes: 30
14+
runs-on: ubuntu-latest
15+
name: ${{ matrix.ghc }}-alpine${{ matrix.os_version }}
16+
strategy:
17+
fail-fast: false
18+
matrix:
19+
ghc: ['9.0.2', '9.2.3']
20+
os_version: ['3.14', '3.15']
21+
include:
22+
- ghc: '9.0.2'
23+
ghc_minor: '9.0'
24+
- ghc: '9.2.3'
25+
ghc_minor: '9.2'
26+
steps:
27+
- uses: actions/checkout@v2
28+
- name: build + smoke test [${{ matrix.ghc }}]
29+
uses: nick-invision/retry@v2
30+
with:
31+
timeout_minutes: 8
32+
max_attempts: 3
33+
command: |
34+
docker build --pull \
35+
-t haskell:${{ matrix.ghc }}-alpine${{ matrix.os_version }} \
36+
${{ matrix.ghc_minor }}/alpine${{ matrix.os_version }}
37+
- uses: actions/checkout@v2
38+
with:
39+
repository: AlistairB/official-images
40+
ref: haskell-sh
41+
path: official-images
42+
- name: run official-images tests
43+
run: ./official-images/test/run.sh haskell:${{ matrix.ghc }}-alpine${{ matrix.os_version }}

9.0/alpine3.14/Dockerfile

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
FROM alpine:3.14
2+
3+
RUN apk add --no-cache \
4+
ca-certificates \
5+
curl \
6+
gcc \
7+
git \
8+
g++ \
9+
gmp-dev \
10+
gnupg \
11+
make \
12+
musl-dev \
13+
ncurses-dev \
14+
libc-dev \
15+
libffi-dev
16+
17+
ARG CABAL_INSTALL=3.6.2.0
18+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
19+
20+
RUN set -eux; \
21+
cd /tmp; \
22+
ARCH="$(apk --print-arch)"; \
23+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-alpine.tar.xz"; \
24+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
25+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
26+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
27+
case "$ARCH" in \
28+
'x86_64') \
29+
CABAL_INSTALL_SHA256='2d3d5e4aa83aad06ed723d7038eac41271d62b56251e0a76fa35db5f902250e3'; \
30+
;; \
31+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
32+
esac; \
33+
curl -sSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
34+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum -c; \
35+
\
36+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
37+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
38+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
39+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
40+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
41+
# confirm we are verying SHA256SUMS that matches the release + sha256
42+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
43+
gpgconf --kill all; \
44+
\
45+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
46+
\
47+
rm -rf /tmp/*; \
48+
\
49+
cabal --version
50+
51+
ARG GHC=9.0.2
52+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
53+
54+
RUN set -eux; \
55+
cd /tmp; \
56+
ARCH="$(apk --print-arch)"; \
57+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-alpine3.12-linux-gmp.tar.xz"; \
58+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
59+
case "$ARCH" in \
60+
'x86_64') \
61+
GHC_SHA256='5bb1e7192c2b9fcff68930dbdc65509d345138e9a43c5d447056a68decc05ec8'; \
62+
;; \
63+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
64+
esac; \
65+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
66+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum -c; \
67+
\
68+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
69+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
70+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
71+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
72+
gpgconf --kill all; \
73+
\
74+
tar xf ghc.tar.xz; \
75+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
76+
./configure --prefix "/opt/ghc/$GHC" --disable-ld-override; \
77+
make install; \
78+
# remove some docs
79+
rm -rf "/opt/ghc/$GHC/share/"; \
80+
\
81+
rm -rf /tmp/*; \
82+
\
83+
"/opt/ghc/$GHC/bin/ghc" --version
84+
85+
ARG STACK=2.7.5
86+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
87+
88+
RUN set -eux; \
89+
cd /tmp; \
90+
ARCH="$(apk --print-arch)"; \
91+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
92+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
93+
case "$ARCH" in \
94+
'x86_64') \
95+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
96+
;; \
97+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
98+
esac; \
99+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
100+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum -c; \
101+
\
102+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
103+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
104+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
105+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
106+
gpgconf --kill all; \
107+
\
108+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
109+
stack config set system-ghc --global true; \
110+
stack config set install-ghc --global false; \
111+
\
112+
rm -rf /tmp/*; \
113+
\
114+
stack --version;
115+
116+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
117+
118+
CMD ["ghci"]

9.0/alpine3.15/Dockerfile

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
FROM alpine:3.15
2+
3+
RUN apk add --no-cache \
4+
ca-certificates \
5+
curl \
6+
gcc \
7+
git \
8+
g++ \
9+
gmp-dev \
10+
gnupg \
11+
make \
12+
musl-dev \
13+
ncurses-dev \
14+
libc-dev \
15+
libffi-dev
16+
17+
ARG CABAL_INSTALL=3.6.2.0
18+
ARG CABAL_INSTALL_RELEASE_KEY=A970DF3AC3B9709706D74544B3D9F94B8DCAE210
19+
20+
RUN set -eux; \
21+
cd /tmp; \
22+
ARCH="$(apk --print-arch)"; \
23+
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-alpine.tar.xz"; \
24+
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \
25+
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \
26+
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS
27+
case "$ARCH" in \
28+
'x86_64') \
29+
CABAL_INSTALL_SHA256='2d3d5e4aa83aad06ed723d7038eac41271d62b56251e0a76fa35db5f902250e3'; \
30+
;; \
31+
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \
32+
esac; \
33+
curl -sSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \
34+
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum -c; \
35+
\
36+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \
37+
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \
38+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
39+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \
40+
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \
41+
# confirm we are verying SHA256SUMS that matches the release + sha256
42+
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \
43+
gpgconf --kill all; \
44+
\
45+
tar -xf cabal-install.tar.gz -C /usr/local/bin; \
46+
\
47+
rm -rf /tmp/*; \
48+
\
49+
cabal --version
50+
51+
ARG GHC=9.0.2
52+
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4
53+
54+
RUN set -eux; \
55+
cd /tmp; \
56+
ARCH="$(apk --print-arch)"; \
57+
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-alpine3.12-linux-gmp.tar.xz"; \
58+
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS
59+
case "$ARCH" in \
60+
'x86_64') \
61+
GHC_SHA256='5bb1e7192c2b9fcff68930dbdc65509d345138e9a43c5d447056a68decc05ec8'; \
62+
;; \
63+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
64+
esac; \
65+
curl -sSL "$GHC_URL" -o ghc.tar.xz; \
66+
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum -c; \
67+
\
68+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
69+
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \
70+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \
71+
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \
72+
gpgconf --kill all; \
73+
\
74+
tar xf ghc.tar.xz; \
75+
cd "ghc-$GHC-$ARCH-unknown-linux"; \
76+
./configure --prefix "/opt/ghc/$GHC" --disable-ld-override; \
77+
make install; \
78+
# remove some docs
79+
rm -rf "/opt/ghc/$GHC/share/"; \
80+
\
81+
rm -rf /tmp/*; \
82+
\
83+
"/opt/ghc/$GHC/bin/ghc" --version
84+
85+
ARG STACK=2.7.5
86+
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442
87+
88+
RUN set -eux; \
89+
cd /tmp; \
90+
ARCH="$(apk --print-arch)"; \
91+
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \
92+
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256
93+
case "$ARCH" in \
94+
'x86_64') \
95+
STACK_SHA256='9bcd165358d4dcafd2b33320d4fe98ce72faaf62300cc9b0fb86a27eb670da50'; \
96+
;; \
97+
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \
98+
esac; \
99+
curl -sSL "$STACK_URL" -o stack.tar.gz; \
100+
echo "$STACK_SHA256 stack.tar.gz" | sha256sum -c; \
101+
\
102+
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \
103+
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \
104+
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \
105+
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \
106+
gpgconf --kill all; \
107+
\
108+
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \
109+
stack config set system-ghc --global true; \
110+
stack config set install-ghc --global false; \
111+
\
112+
rm -rf /tmp/*; \
113+
\
114+
stack --version;
115+
116+
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH
117+
118+
CMD ["ghci"]

0 commit comments

Comments
 (0)