480 lines
11 KiB
YAML
480 lines
11 KiB
YAML
stages:
|
|
- hlint
|
|
- test
|
|
- release
|
|
|
|
variables:
|
|
GIT_SSL_NO_VERIFY: "1"
|
|
|
|
# Commit of ghc/ci-images repository from which to pull Docker images
|
|
DOCKER_REV: 1ac7f435c9312f10422a82d304194778378e2a1a
|
|
|
|
############################################################
|
|
# CI Step
|
|
############################################################
|
|
|
|
.debian:
|
|
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
|
|
tags:
|
|
- x86_64-linux
|
|
variables:
|
|
OS: "LINUX"
|
|
ARCH: "64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.alpine:64bit:
|
|
image: "alpine:3.12"
|
|
tags:
|
|
- x86_64-linux
|
|
variables:
|
|
OS: "LINUX"
|
|
ARCH: "64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.alpine:32bit:
|
|
image: "i386/alpine:3.12"
|
|
tags:
|
|
- x86_64-linux
|
|
variables:
|
|
OS: "LINUX"
|
|
ARCH: "32"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.linux:armv7:
|
|
image: "arm32v7/fedora"
|
|
tags:
|
|
- armv7-linux
|
|
variables:
|
|
OS: "LINUX"
|
|
ARCH: "ARM"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.linux:aarch64:
|
|
image: "arm64v8/fedora"
|
|
tags:
|
|
- aarch64-linux
|
|
variables:
|
|
OS: "LINUX"
|
|
ARCH: "ARM64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.darwin:
|
|
tags:
|
|
- x86_64-darwin
|
|
variables:
|
|
OS: "DARWIN"
|
|
ARCH: "64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.darwin:aarch64:
|
|
tags:
|
|
- aarch64-darwin-m1
|
|
variables:
|
|
OS: "DARWIN"
|
|
ARCH: "ARM64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.freebsd:
|
|
tags:
|
|
- x86_64-freebsd
|
|
variables:
|
|
OS: "FREEBSD"
|
|
ARCH: "64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.windows:
|
|
tags:
|
|
- new-x86_64-windows
|
|
variables:
|
|
OS: "WINDOWS"
|
|
ARCH: "64"
|
|
CABAL_DIR: "$CI_PROJECT_DIR/cabal"
|
|
|
|
.root_cleanup:
|
|
after_script:
|
|
- bash ./.gitlab/after_script.sh
|
|
|
|
.test_ghcup_version:
|
|
script:
|
|
- bash ./.gitlab/script/ghcup_version.sh
|
|
variables:
|
|
JSON_VERSION: "0.0.5"
|
|
artifacts:
|
|
expire_in: 2 week
|
|
paths:
|
|
- golden
|
|
when: on_failure
|
|
|
|
.test_ghcup_version:linux:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .debian
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps.sh
|
|
|
|
.test_ghcup_version:linux32:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .alpine:32bit
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
|
|
.test_ghcup_version:armv7:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .linux:armv7
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps_manual.sh
|
|
|
|
.test_ghcup_version:aarch64:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .linux:aarch64
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps_manual.sh
|
|
|
|
.test_ghcup_version:darwin:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .darwin
|
|
- .root_cleanup
|
|
before_script:
|
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
|
|
.test_ghcup_version:darwin:aarch64:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .darwin:aarch64
|
|
- .root_cleanup
|
|
script: |
|
|
set -Eeuo pipefail
|
|
function runInNixShell() {
|
|
time nix-shell .gitlab/shell.nix \
|
|
-I nixpkgs=https://github.com/angerman/nixpkgs/archive/75f7281738b.tar.gz \
|
|
--argstr system "x86_64-darwin" \
|
|
--pure \
|
|
--keep GHC_VERSION --keep CABAL_INSTALL_VERSION --keep BUILD_FLAVOUR \
|
|
--keep BIN_DIST_PREP_TAR_COMP --keep CPUS --keep PROJECT_DIR \
|
|
--keep CI_PROJECT_DIR --keep MAKE_ARGS --keep HADRIAN_ARGS --keep CABAL_CACHE \
|
|
--keep LANG --keep CONFIGURE_ARGS --keep TEST_ENV --keep BIN_DIST_NAME \
|
|
--keep MACOSX_DEPLOYMENT_TARGET --keep ac_cv_func_clock_gettime --keep HACKAGE_INDEX_STATE \
|
|
--keep CABAL_DIR --keep ARCH --keep OS --keep CABAL_VERSION --keep GHC_VERSION \
|
|
--keep JSON_VERSION --ARTIFACT \
|
|
--run "$1" 2>&1
|
|
}
|
|
runInNixShell ./.gitlab/before_script/darwin/install_deps.sh 2>&1
|
|
runInNixShell ./.gitlab/script/ghcup_version.sh 2>&1
|
|
|
|
.test_ghcup_version:freebsd:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .freebsd
|
|
- .root_cleanup
|
|
before_script:
|
|
- ./.gitlab/before_script/freebsd/install_deps.sh
|
|
|
|
.test_ghcup_version:windows:
|
|
extends:
|
|
- .test_ghcup_version
|
|
- .windows
|
|
- .root_cleanup
|
|
before_script:
|
|
- set CABAL_DIR="$CI_PROJECT_DIR/cabal"
|
|
- bash ./.gitlab/before_script/windows/install_deps.sh
|
|
|
|
.release_ghcup:
|
|
script:
|
|
- bash ./.gitlab/script/ghcup_release.sh
|
|
artifacts:
|
|
expire_in: 2 week
|
|
paths:
|
|
- out
|
|
only:
|
|
- tags
|
|
variables:
|
|
JSON_VERSION: "0.0.5"
|
|
|
|
######## stack test ########
|
|
|
|
test:linux:stack:
|
|
stage: test
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
|
script:
|
|
- ./.gitlab/script/ghcup_stack.sh
|
|
extends:
|
|
- .debian
|
|
needs: []
|
|
|
|
######## bootstrap test ########
|
|
|
|
test:linux:bootstrap_script:
|
|
stage: test
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps_minimal.sh
|
|
script:
|
|
- ./.gitlab/script/ghcup_bootstrap.sh
|
|
variables:
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
extends:
|
|
- .debian
|
|
needs: []
|
|
|
|
######## linux test ########
|
|
|
|
test:linux:recommended:
|
|
stage: test
|
|
extends: .test_ghcup_version:linux
|
|
variables:
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
needs: []
|
|
|
|
test:linux:latest:
|
|
stage: test
|
|
extends: .test_ghcup_version:linux
|
|
variables:
|
|
GHC_VERSION: "9.0.1"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
needs: []
|
|
|
|
######## linux 32bit test ########
|
|
|
|
test:linux:recommended:32bit:
|
|
stage: test
|
|
extends: .test_ghcup_version:linux32
|
|
variables:
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.2.0.0"
|
|
needs: []
|
|
|
|
######## arm tests ########
|
|
|
|
test:linux:recommended:armv7:
|
|
stage: test
|
|
extends: .test_ghcup_version:armv7
|
|
variables:
|
|
GHC_VERSION: "8.10.4"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
when: manual
|
|
needs: []
|
|
|
|
test:linux:recommended:aarch64:
|
|
stage: test
|
|
extends: .test_ghcup_version:aarch64
|
|
variables:
|
|
GHC_VERSION: "8.10.4"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
when: manual
|
|
needs: []
|
|
|
|
######## darwin test ########
|
|
|
|
test:mac:recommended:
|
|
stage: test
|
|
extends: .test_ghcup_version:darwin
|
|
variables:
|
|
GHC_VERSION: "8.10.4"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
needs: []
|
|
|
|
test:mac:latest:
|
|
stage: test
|
|
extends: .test_ghcup_version:darwin
|
|
variables:
|
|
GHC_VERSION: "9.0.1"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
needs: []
|
|
|
|
test:mac:recommended:aarch64:
|
|
stage: test
|
|
extends: .test_ghcup_version:darwin:aarch64
|
|
variables:
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
needs: []
|
|
allow_failure: true
|
|
|
|
|
|
######## freebsd test ########
|
|
|
|
test:freebsd:recommended:
|
|
stage: test
|
|
extends: .test_ghcup_version:freebsd
|
|
variables:
|
|
GHC_VERSION: "8.10.4"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
allow_failure: true # freebsd runners are unreliable
|
|
when: manual
|
|
needs: []
|
|
|
|
######## windows test ########
|
|
|
|
test:windows:recommended:
|
|
stage: test
|
|
extends: .test_ghcup_version:windows
|
|
variables:
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
needs: []
|
|
|
|
######## linux release ########
|
|
|
|
release:linux:64bit:
|
|
stage: release
|
|
needs: ["test:linux:recommended", "test:linux:latest"]
|
|
extends:
|
|
- .alpine:64bit
|
|
- .release_ghcup
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
variables:
|
|
ARTIFACT: "x86_64-linux-ghcup"
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
|
|
|
|
release:linux:32bit:
|
|
stage: release
|
|
needs: ["test:linux:recommended:32bit"]
|
|
extends:
|
|
- .alpine:32bit
|
|
- .release_ghcup
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
variables:
|
|
ARTIFACT: "i386-linux-ghcup"
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.2.0.0"
|
|
|
|
release:linux:armv7:
|
|
stage: release
|
|
needs: ["test:linux:recommended:armv7"]
|
|
extends:
|
|
- .linux:armv7
|
|
- .release_ghcup
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps_manual.sh
|
|
variables:
|
|
ARTIFACT: "armv7-linux-ghcup"
|
|
GHC_VERSION: "8.10.4"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
|
|
release:linux:aarch64:
|
|
stage: release
|
|
needs: ["test:linux:recommended:aarch64"]
|
|
extends:
|
|
- .linux:aarch64
|
|
- .release_ghcup
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/install_deps_manual.sh
|
|
variables:
|
|
ARTIFACT: "aarch64-linux-ghcup"
|
|
GHC_VERSION: "8.10.4"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
|
|
######## darwin release ########
|
|
|
|
release:darwin:
|
|
stage: release
|
|
needs: ["test:mac:recommended", "test:mac:latest"]
|
|
extends:
|
|
- .darwin
|
|
- .release_ghcup
|
|
- .root_cleanup
|
|
before_script:
|
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
variables:
|
|
ARTIFACT: "x86_64-apple-darwin-ghcup"
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
|
|
|
release:darwin:aarch64:
|
|
stage: release
|
|
needs: ["test:mac:recommended:aarch64"]
|
|
extends:
|
|
- .darwin:aarch64
|
|
- .release_ghcup
|
|
- .root_cleanup
|
|
before_script:
|
|
- ./.gitlab/before_script/darwin/install_deps.sh
|
|
variables:
|
|
ARTIFACT: "aarch64-apple-darwin-ghcup"
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
MACOSX_DEPLOYMENT_TARGET: "10.7"
|
|
allow_failure: true
|
|
|
|
|
|
######## freebsd release ########
|
|
|
|
release:freebsd:
|
|
stage: release
|
|
needs: ["test:freebsd:recommended"]
|
|
extends:
|
|
- .freebsd
|
|
- .release_ghcup
|
|
- .root_cleanup
|
|
script: |
|
|
set -Eeuo pipefail
|
|
function runInNixShell() {
|
|
time nix-shell .gitlab/shell.nix \
|
|
-I nixpkgs=https://github.com/angerman/nixpkgs/archive/75f7281738b.tar.gz \
|
|
--argstr system "x86_64-darwin" \
|
|
--pure \
|
|
--keep GHC_VERSION --keep CABAL_INSTALL_VERSION --keep BUILD_FLAVOUR \
|
|
--keep BIN_DIST_PREP_TAR_COMP --keep CPUS --keep PROJECT_DIR \
|
|
--keep CI_PROJECT_DIR --keep MAKE_ARGS --keep HADRIAN_ARGS --keep CABAL_CACHE \
|
|
--keep LANG --keep CONFIGURE_ARGS --keep TEST_ENV --keep BIN_DIST_NAME \
|
|
--keep MACOSX_DEPLOYMENT_TARGET --keep ac_cv_func_clock_gettime --keep HACKAGE_INDEX_STATE \
|
|
--keep CABAL_DIR --keep ARCH --keep OS --keep CABAL_VERSION --keep GHC_VERSION \
|
|
--keep JSON_VERSION --ARTIFACT \
|
|
--run "$1" 2>&1
|
|
}
|
|
runInNixShell ./.gitlab/before_script/freebsd/install_deps.sh 2>&1
|
|
runInNixShell ./.gitlab/script/ghcup_release.sh 2>&1
|
|
variables:
|
|
ARTIFACT: "x86_64-portbld-freebsd-ghcup"
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
allow_failure: true
|
|
|
|
######## windows release ########
|
|
|
|
release:windows:
|
|
stage: release
|
|
needs: ["test:windows:recommended"]
|
|
extends:
|
|
- .windows
|
|
- .release_ghcup
|
|
- .root_cleanup
|
|
before_script:
|
|
- bash ./.gitlab/before_script/windows/install_deps.sh
|
|
variables:
|
|
ARTIFACT: "x86_64-mingw64-ghcup"
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
|
|
######## hlint ########
|
|
|
|
hlint:
|
|
stage: hlint
|
|
extends:
|
|
- .alpine:64bit
|
|
before_script:
|
|
- ./.gitlab/before_script/linux/alpine/install_deps.sh
|
|
script:
|
|
- ./.gitlab/script/hlint.sh
|
|
variables:
|
|
GHC_VERSION: "8.10.5"
|
|
CABAL_VERSION: "3.4.0.0"
|
|
JSON_VERSION: "0.0.4"
|
|
allow_failure: true
|
|
artifacts:
|
|
expire_in: 2 week
|
|
paths:
|
|
- report.html
|
|
when: on_failure
|