-
Notifications
You must be signed in to change notification settings - Fork 38
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
759 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
name: Validate Alpine | ||
|
||
on: | ||
pull_request: | ||
branches: | ||
- master | ||
paths: | ||
- '**/alpine*/Dockerfile' | ||
- '.github/workflows/alpine.yml' | ||
|
||
jobs: | ||
build-smoke-test: | ||
timeout-minutes: 30 | ||
runs-on: ubuntu-latest | ||
name: ${{ matrix.ghc }}-alpine${{ matrix.os_version }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
ghc: ['9.0.2', '9.2.4', '9.4.2'] | ||
os_version: ['3.15', '3.16'] | ||
include: | ||
- ghc: '9.0.2' | ||
ghc_minor: '9.0' | ||
- ghc: '9.2.4' | ||
ghc_minor: '9.2' | ||
- ghc: '9.4.2' | ||
ghc_minor: '9.4' | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- name: build + smoke test [${{ matrix.ghc }}] | ||
uses: nick-invision/retry@v2 | ||
with: | ||
timeout_minutes: 8 | ||
max_attempts: 3 | ||
command: | | ||
docker build --pull \ | ||
-t haskell:${{ matrix.ghc }}-alpine${{ matrix.os_version }} \ | ||
${{ matrix.ghc_minor }}/alpine${{ matrix.os_version }} | ||
- uses: actions/checkout@v2 | ||
with: | ||
repository: AlistairB/official-images | ||
ref: haskell-sh | ||
path: official-images | ||
- name: run official-images tests | ||
run: ./official-images/test/run.sh haskell:${{ matrix.ghc }}-alpine${{ matrix.os_version }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
FROM alpine:3.15 | ||
|
||
RUN apk add --no-cache \ | ||
ca-certificates \ | ||
curl \ | ||
gcc \ | ||
git \ | ||
g++ \ | ||
gmp-dev \ | ||
gnupg \ | ||
make \ | ||
musl-dev \ | ||
ncurses-dev \ | ||
libc-dev \ | ||
libffi-dev | ||
|
||
ARG STACK=2.9.1 | ||
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442 | ||
|
||
RUN set -eux; \ | ||
cd /tmp; \ | ||
ARCH="$(apk --print-arch)"; \ | ||
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \ | ||
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256 | ||
case "$ARCH" in \ | ||
'x86_64') \ | ||
STACK_SHA256='0581cebe880b8ed47556ee73d8bbb9d602b5b82e38f89f6aa53acaec37e7760d'; \ | ||
;; \ | ||
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \ | ||
esac; \ | ||
curl -sSL "$STACK_URL" -o stack.tar.gz; \ | ||
echo "$STACK_SHA256 stack.tar.gz" | sha256sum -c; \ | ||
\ | ||
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \ | ||
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ | ||
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \ | ||
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \ | ||
gpgconf --kill all; \ | ||
\ | ||
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \ | ||
stack config set system-ghc --global true; \ | ||
stack config set install-ghc --global false; \ | ||
\ | ||
rm -rf /tmp/*; \ | ||
\ | ||
stack --version; | ||
|
||
ARG CABAL_INSTALL=3.8.1.0 | ||
ARG CABAL_INSTALL_RELEASE_KEY=E9EC5616017C3EE26B33468CCE1ED8AE0B011D8C | ||
|
||
RUN set -eux; \ | ||
cd /tmp; \ | ||
ARCH="$(apk --print-arch)"; \ | ||
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-alpine.tar.xz"; \ | ||
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \ | ||
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \ | ||
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS | ||
case "$ARCH" in \ | ||
'x86_64') \ | ||
CABAL_INSTALL_SHA256='4c5626115ca8d3eaba0f6a79a364952a2403a03a459dd6e247a96546cdd50836'; \ | ||
;; \ | ||
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \ | ||
esac; \ | ||
curl -sSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \ | ||
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum -c; \ | ||
\ | ||
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \ | ||
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \ | ||
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ | ||
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \ | ||
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \ | ||
# confirm we are verying SHA256SUMS that matches the release + sha256 | ||
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \ | ||
gpgconf --kill all; \ | ||
\ | ||
# seems this is not gzip compression | ||
tar --lzma -xvpf cabal-install.tar.gz -C /usr/local/bin; \ | ||
\ | ||
rm -rf /tmp/*; \ | ||
\ | ||
cabal --version | ||
|
||
ARG GHC=9.0.2 | ||
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 | ||
|
||
RUN set -eux; \ | ||
cd /tmp; \ | ||
ARCH="$(apk --print-arch)"; \ | ||
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-alpine3.12-linux-gmp.tar.xz"; \ | ||
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS | ||
case "$ARCH" in \ | ||
'x86_64') \ | ||
GHC_SHA256='5bb1e7192c2b9fcff68930dbdc65509d345138e9a43c5d447056a68decc05ec8'; \ | ||
;; \ | ||
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \ | ||
esac; \ | ||
curl -sSL "$GHC_URL" -o ghc.tar.xz; \ | ||
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum -c; \ | ||
\ | ||
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ | ||
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \ | ||
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \ | ||
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \ | ||
gpgconf --kill all; \ | ||
\ | ||
tar xf ghc.tar.xz; \ | ||
cd "ghc-$GHC-$ARCH-unknown-linux"; \ | ||
./configure --prefix "/opt/ghc/$GHC" --disable-ld-override; \ | ||
make install; \ | ||
# remove some docs | ||
rm -rf "/opt/ghc/$GHC/share/"; \ | ||
\ | ||
rm -rf /tmp/*; \ | ||
\ | ||
"/opt/ghc/$GHC/bin/ghc" --version | ||
|
||
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH | ||
|
||
CMD ["ghci"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
FROM alpine:3.16 | ||
|
||
RUN apk add --no-cache \ | ||
ca-certificates \ | ||
curl \ | ||
gcc \ | ||
git \ | ||
g++ \ | ||
gmp-dev \ | ||
gnupg \ | ||
make \ | ||
musl-dev \ | ||
ncurses-dev \ | ||
libc-dev \ | ||
libffi-dev | ||
|
||
ARG STACK=2.9.1 | ||
ARG STACK_RELEASE_KEY=C5705533DA4F78D8664B5DC0575159689BEFB442 | ||
|
||
RUN set -eux; \ | ||
cd /tmp; \ | ||
ARCH="$(apk --print-arch)"; \ | ||
STACK_URL="https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz"; \ | ||
# sha256 from https://github.com/commercialhaskell/stack/releases/download/v${STACK}/stack-${STACK}-linux-$ARCH.tar.gz.sha256 | ||
case "$ARCH" in \ | ||
'x86_64') \ | ||
STACK_SHA256='0581cebe880b8ed47556ee73d8bbb9d602b5b82e38f89f6aa53acaec37e7760d'; \ | ||
;; \ | ||
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \ | ||
esac; \ | ||
curl -sSL "$STACK_URL" -o stack.tar.gz; \ | ||
echo "$STACK_SHA256 stack.tar.gz" | sha256sum -c; \ | ||
\ | ||
curl -sSL "$STACK_URL.asc" -o stack.tar.gz.asc; \ | ||
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ | ||
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$STACK_RELEASE_KEY"; \ | ||
gpg --batch --verify stack.tar.gz.asc stack.tar.gz; \ | ||
gpgconf --kill all; \ | ||
\ | ||
tar -xf stack.tar.gz -C /usr/local/bin --strip-components=1 "stack-$STACK-linux-$ARCH/stack"; \ | ||
stack config set system-ghc --global true; \ | ||
stack config set install-ghc --global false; \ | ||
\ | ||
rm -rf /tmp/*; \ | ||
\ | ||
stack --version; | ||
|
||
ARG CABAL_INSTALL=3.8.1.0 | ||
ARG CABAL_INSTALL_RELEASE_KEY=E9EC5616017C3EE26B33468CCE1ED8AE0B011D8C | ||
|
||
RUN set -eux; \ | ||
cd /tmp; \ | ||
ARCH="$(apk --print-arch)"; \ | ||
CABAL_INSTALL_TAR="cabal-install-$CABAL_INSTALL-$ARCH-linux-alpine.tar.xz"; \ | ||
CABAL_INSTALL_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/$CABAL_INSTALL_TAR"; \ | ||
CABAL_INSTALL_SHA256SUMS_URL="https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS"; \ | ||
# sha256 from https://downloads.haskell.org/~cabal/cabal-install-$CABAL_INSTALL/SHA256SUMS | ||
case "$ARCH" in \ | ||
'x86_64') \ | ||
CABAL_INSTALL_SHA256='4c5626115ca8d3eaba0f6a79a364952a2403a03a459dd6e247a96546cdd50836'; \ | ||
;; \ | ||
*) echo >&2 "error: unsupported architecture '$ARCH'"; exit 1 ;; \ | ||
esac; \ | ||
curl -sSL "$CABAL_INSTALL_URL" -o cabal-install.tar.gz; \ | ||
echo "$CABAL_INSTALL_SHA256 cabal-install.tar.gz" | sha256sum -c; \ | ||
\ | ||
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL"; \ | ||
curl -sSLO "$CABAL_INSTALL_SHA256SUMS_URL.sig"; \ | ||
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ | ||
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$CABAL_INSTALL_RELEASE_KEY"; \ | ||
gpg --batch --verify SHA256SUMS.sig SHA256SUMS; \ | ||
# confirm we are verying SHA256SUMS that matches the release + sha256 | ||
grep "$CABAL_INSTALL_SHA256 $CABAL_INSTALL_TAR" SHA256SUMS; \ | ||
gpgconf --kill all; \ | ||
\ | ||
# seems this is not gzip compression | ||
tar --lzma -xvpf cabal-install.tar.gz -C /usr/local/bin; \ | ||
\ | ||
rm -rf /tmp/*; \ | ||
\ | ||
cabal --version | ||
|
||
ARG GHC=9.0.2 | ||
ARG GHC_RELEASE_KEY=88B57FCF7DB53B4DB3BFA4B1588764FBE22D19C4 | ||
|
||
RUN set -eux; \ | ||
cd /tmp; \ | ||
ARCH="$(apk --print-arch)"; \ | ||
GHC_URL="https://downloads.haskell.org/~ghc/$GHC/ghc-$GHC-$ARCH-alpine3.12-linux-gmp.tar.xz"; \ | ||
# sha256 from https://downloads.haskell.org/~ghc/$GHC/SHA256SUMS | ||
case "$ARCH" in \ | ||
'x86_64') \ | ||
GHC_SHA256='5bb1e7192c2b9fcff68930dbdc65509d345138e9a43c5d447056a68decc05ec8'; \ | ||
;; \ | ||
*) echo >&2 "error: unsupported architecture '$ARCH'" ; exit 1 ;; \ | ||
esac; \ | ||
curl -sSL "$GHC_URL" -o ghc.tar.xz; \ | ||
echo "$GHC_SHA256 ghc.tar.xz" | sha256sum -c; \ | ||
\ | ||
GNUPGHOME="$(mktemp -d)"; export GNUPGHOME; \ | ||
curl -sSL "$GHC_URL.sig" -o ghc.tar.xz.sig; \ | ||
gpg --batch --keyserver keyserver.ubuntu.com --receive-keys "$GHC_RELEASE_KEY"; \ | ||
gpg --batch --verify ghc.tar.xz.sig ghc.tar.xz; \ | ||
gpgconf --kill all; \ | ||
\ | ||
tar xf ghc.tar.xz; \ | ||
cd "ghc-$GHC-$ARCH-unknown-linux"; \ | ||
./configure --prefix "/opt/ghc/$GHC" --disable-ld-override; \ | ||
make install; \ | ||
# remove some docs | ||
rm -rf "/opt/ghc/$GHC/share/"; \ | ||
\ | ||
rm -rf /tmp/*; \ | ||
\ | ||
"/opt/ghc/$GHC/bin/ghc" --version | ||
|
||
ENV PATH /root/.cabal/bin:/root/.local/bin:/opt/ghc/${GHC}/bin:$PATH | ||
|
||
CMD ["ghci"] |
Oops, something went wrong.