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"

.alpine:64bit:
  image: "alpine:edge"
  tags:
    - x86_64-linux
  variables:
    OS: "LINUX"
    BIT: "64"

.alpine:32bit:
  image: "i386/alpine:edge"
  tags:
    - x86_64-linux
  variables:
    OS: "LINUX"
    BIT: "32"

.darwin:
  tags:
    - x86_64-darwin
  variables:
    OS: "DARWIN"

.freebsd:
  tags:
    - x86_64-freebsd
  variables:
    OS: "FREEBSD"

.root_cleanup:
  after_script:
    - BUILD_DIR=$CI_PROJECT_DIR
    - echo "Cleaning $BUILD_DIR"
    - cd $HOME
    - test -n "$BUILD_DIR"
    - shopt -s extglob
    - rm -Rf "$BUILD_DIR"/!(out)
    - exit 0

.test_ghcup_version:
  script:
    - ./.gitlab/script/ghcup_version.sh
  variables:
    JSON_VERSION: "0.0.2"

.test_ghcup_version:linux:
  extends:
    - .test_ghcup_version
    - .debian
  before_script:
    - ./.gitlab/before_script/linux/install_deps.sh

.test_ghcup_version:darwin:
  extends:
    - .test_ghcup_version
    - .darwin
    - .root_cleanup
  before_script:
    - ./.gitlab/before_script/darwin/install_deps.sh

.test_ghcup_version:freebsd:
  extends:
    - .test_ghcup_version
    - .freebsd
    - .root_cleanup
  before_script:
    - ./.gitlab/before_script/freebsd/install_deps.sh

.release_ghcup:
  script:
    - ./.gitlab/script/ghcup_release.sh
  artifacts:
    expire_in: 2 week
    paths:
      - out
  only:
    - tags

######## linux test ########

test:linux:recommended:
  extends: .test_ghcup_version:linux
  variables:
    GHC_VERSION: "8.8.3"
    CABAL_VERSION: "3.2.0.0"

test:linux:latest:
  extends: .test_ghcup_version:linux
  variables:
    GHC_VERSION: "8.10.1"
    CABAL_VERSION: "3.2.0.0"
  allow_failure: true


######## darwin test ########

test:mac:recommended:
  extends: .test_ghcup_version:darwin
  variables:
    GHC_VERSION: "8.8.3"
    CABAL_VERSION: "3.2.0.0"

test:mac:latest:
  extends: .test_ghcup_version:darwin
  variables:
    GHC_VERSION: "8.10.1"
    CABAL_VERSION: "3.2.0.0"
  allow_failure: true


######## freebsd test ########

test:freebsd:recommended:
  extends: .test_ghcup_version:freebsd
  variables:
    GHC_VERSION: "8.8.3"
    CABAL_VERSION: "3.2.0.0"

test:freebsd:latest:
  extends: .test_ghcup_version:freebsd
  variables:
    GHC_VERSION: "8.10.1"
    CABAL_VERSION: "3.2.0.0"
  allow_failure: true


######## linux release ########

release:linux:64bit:
  extends:
    - .alpine:64bit
    - .release_ghcup
  before_script:
    - ./.gitlab/before_script/linux/alpine/install_deps.sh
  variables:
    ARTIFACT: "x86_64-linux-ghcup"
    GHC_VERSION: "8.8.3"
    CABAL_VERSION: "3.2.0.0"


release:linux:32bit:
  extends:
    - .alpine:32bit
    - .release_ghcup
  before_script:
    - ./.gitlab/before_script/linux/alpine/install_deps.sh
  variables:
    ARTIFACT: "i386-linux-ghcup"
    GHC_VERSION: "8.8.3"
    CABAL_VERSION: "3.2.0.0"


######## darwin release ########

release:darwin:
  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.8.3"
    CABAL_VERSION: "3.2.0.0"
    MACOSX_DEPLOYMENT_TARGET: "10.7"


######## freebsd release ########

release:freebsd:
  extends:
    - .freebsd
    - .release_ghcup
    - .root_cleanup
  before_script:
    - ./.gitlab/before_script/freebsd/install_deps.sh
  variables:
    ARTIFACT: "x86_64-portbld-freebsd-ghcup"
    GHC_VERSION: "8.8.3"
    CABAL_VERSION: "3.2.0.0"

