Feat: Update CI #150
Workflow file for this run
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
name: Validate Debian | |
on: | |
pull_request: | |
branches: | |
- master | |
paths: | |
- '**/bullseye/Dockerfile' | |
- '**/buster/Dockerfile' | |
- '**/slim-bullseye/Dockerfile' | |
- '**/slim-buster/Dockerfile' | |
- '.github/workflows/debian.yml' | |
# See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency. | |
concurrency: | |
group: ${{ github.head_ref }}-${{ github.workflow }} | |
cancel-in-progress: true | |
jobs: | |
build-smoke-test: | |
timeout-minutes: 30 | |
runs-on: ubuntu-24.04 | |
name: ${{ matrix.ghc }}-${{ matrix.deb }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ['9.10.1', '9.8.4', '9.6.6', '9.4.8', '9.2.8', '9.0.2' ] | |
deb: ['buster', 'slim-buster'] | |
include: | |
- ghc: '9.10.1' | |
ghc_minor: '9.10' | |
deb: 'slim-bullseye' | |
- ghc: '9.10.1' | |
ghc_minor: '9.10' | |
deb: 'bullseye' | |
- ghc: '9.10.1' | |
ghc_minor: '9.10' | |
- ghc: '9.8.4' | |
ghc_minor: '9.8' | |
deb: 'slim-bullseye' | |
- ghc: '9.8.4' | |
ghc_minor: '9.8' | |
deb: 'bullseye' | |
- ghc: '9.8.4' | |
ghc_minor: '9.8' | |
- ghc: '9.6.6' | |
ghc_minor: '9.6' | |
deb: 'slim-bullseye' | |
- ghc: '9.6.6' | |
ghc_minor: '9.6' | |
deb: 'bullseye' | |
- ghc: '9.6.6' | |
ghc_minor: '9.6' | |
- ghc: '9.4.8' | |
ghc_minor: '9.4' | |
- ghc: '9.2.8' | |
ghc_minor: '9.2' | |
- ghc: '9.0.2' | |
ghc_minor: '9.0' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: build + smoke test [${{ matrix.ghc }}] | |
uses: nick-invision/retry@v3.0.0 | |
with: | |
timeout_minutes: 8 | |
max_attempts: 3 | |
command: | | |
docker build --pull \ | |
-t haskell:${{ matrix.ghc }}-${{ matrix.deb }} \ | |
${{ matrix.ghc_minor }}/${{ matrix.deb }} \ | |
--build-arg "BUILDKIT_DOCKERFILE_CHECK=skip=SecretsUsedInArgOrEnv;error=true" | |
- uses: actions/checkout@v4 | |
with: | |
repository: docker-library/official-images | |
path: official-images | |
- name: run official-images tests | |
run: ./official-images/test/run.sh haskell:${{ matrix.ghc }}-${{ matrix.deb }} | |
emulated-architecture-tests: | |
timeout-minutes: 60 | |
runs-on: ubuntu-24.04 | |
name: ${{ matrix.arch }}-${{ matrix.ghc }}-${{ matrix.deb }} | |
strategy: | |
fail-fast: false | |
matrix: | |
ghc: ['9.0.2', '9.2.8', '9.4.8', '9.6.6', '9.8.4', '9.10.1'] | |
# uraimo/run-on-arch-action does not support debian slim variants | |
deb: ['buster'] | |
arch: ['aarch64'] | |
include: | |
# bullseye (debian 11) | |
- ghc: '9.10.1' | |
ghc_minor: '9.10' | |
deb: 'bullseye' | |
arch: 'aarch64' | |
docker_platform: arm64 | |
- ghc: '9.8.4' | |
ghc_minor: '9.8' | |
deb: 'bullseye' | |
arch: 'aarch64' | |
docker_platform: arm64 | |
- ghc: '9.6.6' | |
ghc_minor: '9.6' | |
deb: 'bullseye' | |
arch: 'aarch64' | |
docker_platform: arm64 | |
# buster (debian 10) | |
- ghc: '9.10.1' | |
ghc_minor: '9.10' | |
- ghc: '9.8.4' | |
ghc_minor: '9.8' | |
- ghc: '9.6.6' | |
ghc_minor: '9.6' | |
- ghc: '9.4.8' | |
ghc_minor: '9.4' | |
- ghc: '9.2.8' | |
ghc_minor: '9.2' | |
- ghc: '9.0.2' | |
ghc_minor: '9.0' | |
- arch: aarch64 | |
docker_platform: arm64 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: docker build [ ${{ matrix.arch }} ${{ matrix.ghc }}] | |
uses: uraimo/run-on-arch-action@v2.8.1 | |
with: | |
arch: ${{ matrix.arch }} | |
distro: ${{ matrix.deb }} | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y curl | |
curl -fsSL https://get.docker.com | sh | |
run: | | |
docker build --pull --progress=plain \ | |
--platform "linux/${{ matrix.docker_platform }}" \ | |
-t haskell:${{ matrix.ghc }}-${{ matrix.deb }} \ | |
${{ matrix.ghc_minor }}/${{ matrix.deb }} \ | |
--build-arg "BUILDKIT_DOCKERFILE_CHECK=skip=SecretsUsedInArgOrEnv;error=true" | |
echo 'testing..' | |
docker run \ | |
--platform "linux/${{ matrix.docker_platform }}" \ | |
-t haskell:${{ matrix.ghc }}-${{ matrix.deb }} \ | |
bash -c "cabal update && cabal install --lib primitive" | |
docker run \ | |
--platform "linux/${{ matrix.docker_platform }}" \ | |
-t haskell:${{ matrix.ghc }}-${{ matrix.deb }} \ | |
bash -c "echo | ghci" | |
# Running the official tests does not work as we need to hardcode the plaform due to the emulated nature. | |
# This solution is fairly hacky, but gets us most of benefit of the official tests. |