haskell-language-server/.gitlab-ci.yml
2022-09-14 02:27:17 +05:30

543 lines
12 KiB
YAML

stages:
- build
- tar
- test
# Used for ci setup in the gitlab mirror of the project:
# https://gitlab.haskell.org/haskell/haskell-language-server/-/pipelines
variables:
# Commit of ghc/ci-images repository from which to pull Docker images
DOCKER_REV: "9e4c540d9e4972a36291dfdf81f079f37d748890"
CABAL_INSTALL_VERSION: 3.8.1.0
.windows_matrix: &windows_matrix
matrix:
- GHC_VERSION: 8.10.7
CABAL_PROJECT: cabal.project
- GHC_VERSION: 9.0.2
CABAL_PROJECT: cabal.project
- GHC_VERSION: 9.2.3
CABAL_PROJECT: cabal.project
- GHC_VERSION: 9.2.4
CABAL_PROJECT: cabal.project
- GHC_VERSION: 9.4.1
CABAL_PROJECT: cabal.project
- GHC_VERSION: 9.4.2
CABAL_PROJECT: cabal.project
workflow:
rules:
- if: $CI_COMMIT_TAG
when: always
- when: never
.artifacts:
artifacts:
expire_in: 2 week
paths:
- out
.artifacts:short:
artifacts:
expire_in: 1 day
paths:
- out
.build:
extends: .artifacts:short
stage: build
script:
- bash .gitlab/ci.sh
.test:
stage: test
script:
- bash .gitlab/test.sh
.aarch64-linux:
tags:
- aarch64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb10:$DOCKER_REV"
.armv7-linux:
tags:
- armv7-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/armv7-linux-deb10:$DOCKER_REV"
.x86_64-linux-deb10:
tags:
- x86_64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb10:$DOCKER_REV"
.x86_64-linux-deb9:
tags:
- x86_64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
.x86_64-linux-centos7:
tags:
- x86_64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-centos7:$DOCKER_REV"
.x86_64-linux-fedora33:
tags:
- x86_64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora33:$DOCKER_REV"
.x86_64-linux-alpine:
tags:
- x86_64-linux
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-alpine3_12:$DOCKER_REV"
######################
# aarch64 linux deb10
######################
build-aarch64-linux-deb10:
extends:
- .build
- .aarch64-linux
before_script:
- sudo apt update
- sudo apt install -y patchelf tree
variables:
ADD_CABAL_ARGS: ""
tar-aarch64-linux-deb10:
extends:
- .artifacts
- .aarch64-linux
stage: tar
needs: ["build-aarch64-linux-deb10"]
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: aarch64-deb10-linux
TARBALL_EXT: tar.xz
test-aarch64-linux-deb10:
extends:
- .test
- .aarch64-linux
needs: ["tar-aarch64-linux-deb10"]
before_script:
- sudo apt update
- sudo apt install -y tree
######################
# armv7 linux deb10
######################
build-armv7-linux-deb10:
extends:
- .build
- .armv7-linux
before_script:
- sudo apt update
- sudo apt install -y patchelf tree
variables:
ADD_CABAL_ARGS: ""
tar-armv7-linux-deb10:
extends:
- .artifacts
- .armv7-linux
stage: tar
needs: ["build-armv7-linux-deb10"]
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: armv7-deb10-linux
TARBALL_EXT: tar.xz
test-armv7-linux-deb10:
extends:
- .test
- .armv7-linux
needs: ["tar-armv7-linux-deb10"]
before_script:
- sudo apt update
- sudo apt install -y tree
######################
# x86_64 linux deb10
######################
build-x86_64-linux-deb10:
extends:
- .build
- .x86_64-linux-deb10
before_script:
- sudo apt update
- sudo apt install -y patchelf tree
variables:
ADD_CABAL_ARGS: "--enable-split-sections"
tar-x86_64-linux-deb10:
extends:
- .artifacts
- .x86_64-linux-deb10
stage: tar
needs: ["build-x86_64-linux-deb10"]
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-deb10-linux
TARBALL_EXT: tar.xz
test-x86_64-linux-deb10:
extends:
- .test
- .x86_64-linux-deb10
needs: ["tar-x86_64-linux-deb10"]
before_script:
- sudo apt update
- sudo apt install -y tree
######################
# x86_64 linux deb9
######################
build-x86_64-linux-deb9:
extends:
- .build
- .x86_64-linux-deb9
before_script:
- sudo apt update
- sudo apt install -y patchelf tree
variables:
ADD_CABAL_ARGS: "--enable-split-sections"
tar-x86_64-linux-deb9:
extends:
- .artifacts
- .x86_64-linux-deb9
stage: tar
needs: ["build-x86_64-linux-deb9"]
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-deb9-linux
TARBALL_EXT: tar.xz
test-x86_64-linux-deb9:
extends:
- .test
- .x86_64-linux-deb9
needs: ["tar-x86_64-linux-deb9"]
before_script:
- sudo apt update
- sudo apt install -y tree
######################
# x86_64 linux centos7
######################
build-x86_64-linux-centos7:
extends:
- .build
- .x86_64-linux-centos7
before_script:
- sudo yum install -y epel-release
- sudo yum install -y patchelf tree
variables:
ADD_CABAL_ARGS: "--enable-split-sections"
tar-x86_64-linux-centos7:
extends:
- .artifacts
- .x86_64-linux-centos7
stage: tar
needs: ["build-x86_64-linux-centos7"]
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-centos7-linux
TARBALL_EXT: tar.xz
test-x86_64-linux-centos7:
extends:
- .test
- .x86_64-linux-centos7
needs: ["tar-x86_64-linux-centos7"]
before_script:
- sudo yum install -y tree
######################
# x86_64 linux fedora33
######################
build-x86_64-linux-fedora33:
extends:
- .build
- .x86_64-linux-fedora33
before_script:
- sudo dnf install -y patchelf tree
variables:
ADD_CABAL_ARGS: "--enable-split-sections"
tar-x86_64-linux-fedora33:
extends:
- .artifacts
- .x86_64-linux-fedora33
stage: tar
needs: ["build-x86_64-linux-fedora33"]
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-fedora33-linux
TARBALL_EXT: tar.xz
test-x86_64-linux-fedora33:
extends:
- .test
- .x86_64-linux-fedora33
needs: ["tar-x86_64-linux-fedora33"]
before_script:
- sudo dnf install -y tree
######################
# x86_64 linux alpine
######################
build-x86_64-linux-alpine:
extends:
- .build
- .x86_64-linux-alpine
before_script:
- sudo apk add --no-cache tar zlib zlib-dev zlib-static bzip2 bzip2-dev bzip2-static gmp gmp-dev xz xz-dev ncurses-static patchelf findutils tree
variables:
ADD_CABAL_ARGS: "--enable-split-sections --enable-executable-static"
tar-x86_64-linux-alpine:
extends:
- .artifacts
- .x86_64-linux-alpine
stage: tar
needs: ["build-x86_64-linux-alpine"]
before_script:
- sudo apk add --no-cache tar zlib zlib-dev zlib-static bzip2 bzip2-dev bzip2-static gmp gmp-dev xz xz-dev ncurses-static
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-alpine3.12-linux
TARBALL_EXT: tar.xz
test-x86_64-linux-alpine:
extends:
- .test
- .x86_64-linux-alpine
needs: ["tar-x86_64-linux-alpine"]
before_script:
- sudo apk add --no-cache tar zlib zlib-dev zlib-static bzip2 bzip2-dev bzip2-static gmp gmp-dev xz xz-dev ncurses-static tree
######################
# x86_64 freebsd 12
######################
build-x86_64-freebsd12:
extends: .build
before_script:
- sudo pkg update
- sudo pkg install --yes patchelf gmake tree binutils
tags:
- x86_64-freebsd12
variables:
ADD_CABAL_ARGS: "--enable-split-sections -j1"
tar-x86_64-freebsd12:
extends: .artifacts
stage: tar
needs: ["build-x86_64-freebsd12"]
tags:
- x86_64-freebsd12
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-unknown-freebsd12
TARBALL_EXT: tar.xz
test-x86_64-freebsd12:
extends: .test
needs: ["tar-x86_64-freebsd12"]
tags:
- x86_64-freebsd12
before_script:
- sudo pkg update
- sudo pkg install --yes patchelf gmake tree binutils
######################
# x86_64 freebsd 13
######################
build-x86_64-freebsd13:
extends: .build
tags:
- x86_64-freebsd13
before_script:
- sudo pkg update
- sudo pkg install --yes compat12x-amd64 patchelf gmake tree binutils
- sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2
variables:
ADD_CABAL_ARGS: "--enable-split-sections -j1"
tar-x86_64-freebsd13:
extends: .artifacts
stage: tar
needs: ["build-x86_64-freebsd13"]
tags:
- x86_64-freebsd13
script:
- ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-unknown-freebsd13
TARBALL_EXT: tar.xz
test-x86_64-freebsd13:
extends: .test
needs: ["tar-x86_64-freebsd13"]
tags:
- x86_64-freebsd13
before_script:
- sudo pkg update
- sudo pkg install --yes compat12x-amd64 gmake tree binutils
- sudo ln -s libncurses.so.6 /usr/local/lib/libncurses.so.6.2
######################
# x86_64 darwin
######################
build-x86_64-darwin:
extends: .build
tags:
- x86_64-darwin
variables:
ADD_CABAL_ARGS: ""
before_script:
- /bin/bash ./.gitlab/brew.sh autoconf automake coreutils make tree
script: |
export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
/bin/bash ./.gitlab/ci.sh
after_script:
- rm -Rf /private/tmp/.brew_tmp
tar-x86_64-darwin:
extends: .artifacts
stage: tar
needs: ["build-x86_64-darwin"]
tags:
- x86_64-darwin
before_script:
- /bin/bash ./.gitlab/brew.sh autoconf automake coreutils make tree
script: |
export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
/bin/bash ./.gitlab/tar.sh
after_script:
- rm -Rf /private/tmp/.brew_tmp
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-apple-darwin
TARBALL_EXT: tar.xz
test-x86_64-darwin:
extends: .test
needs: ["tar-x86_64-darwin"]
tags:
- x86_64-darwin
before_script:
- /bin/bash ./.gitlab/brew.sh make tree
script: |
export PATH="$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
/bin/bash .gitlab/test.sh
after_script:
- rm -Rf /private/tmp/.brew_tmp
######################
# aarch64 darwin
######################
build-aarch64-darwin:
extends: .artifacts:short
stage: build
tags:
- aarch64-darwin-m1
before_script:
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
- arch -arm64 /bin/bash ./.gitlab/brew.sh llvm autoconf automake coreutils make tree
script: |
export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
export CC=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang
export CXX=$CI_PROJECT_DIR/.brew/opt/llvm/bin/clang++
export LD=ld
export AR=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ar
export RANLIB=$CI_PROJECT_DIR/.brew/opt/llvm/bin/llvm-ranlib
arch -arm64 /bin/bash ./.gitlab/ci.sh
after_script:
- rm -Rf /private/tmp/.brew_tmp
variables:
MACOSX_DEPLOYMENT_TARGET: "10.7"
ADD_CABAL_ARGS: ""
tar-aarch64-darwin:
extends: .artifacts
stage: tar
needs: ["build-aarch64-darwin"]
tags:
- aarch64-darwin-m1
script:
- arch -arm64 /bin/bash ./.gitlab/tar.sh
variables:
TARBALL_ARCHIVE_SUFFIX: aarch64-apple-darwin
TARBALL_EXT: tar.xz
test-aarch64-darwin:
extends: .test
needs: ["tar-aarch64-darwin"]
tags:
- aarch64-darwin-m1
before_script:
- export HOMEBREW_CHANGE_ARCH_TO_ARM=1
- arch -arm64 /bin/bash ./.gitlab/brew.sh make tree
script: |
export PATH="$CI_PROJECT_DIR/.brew/opt/llvm/bin:$CI_PROJECT_DIR/.brew/bin:$CI_PROJECT_DIR/.brew/sbin:$PATH"
arch -arm64 /bin/bash ./.gitlab/test.sh
after_script:
- rm -Rf /private/tmp/.brew_tmp
######################
# x86_64 windows
######################
build-x86_64-windows:
extends: .build
tags:
- new-x86_64-windows
parallel: *windows_matrix
script:
- $env:CHERE_INVOKING = "yes"
- bash '-lc' "ADD_CABAL_ARGS=$env:ADD_CABAL_ARGS GHC_VERSION=$env:GHC_VERSION CABAL_INSTALL_VERSION=$CABAL_INSTALL_VERSION .gitlab/ci.sh"
variables:
ADD_CABAL_ARGS: ""
tar-x86_64-windows:
extends: .artifacts
stage: tar
needs: ["build-x86_64-windows"]
tags:
- new-x86_64-windows
script:
- $env:CHERE_INVOKING = "yes"
- bash '-lc' "TARBALL_ARCHIVE_SUFFIX=$env:TARBALL_ARCHIVE_SUFFIX TARBALL_EXT=$env:TARBALL_EXT .gitlab/tar.sh"
variables:
TARBALL_ARCHIVE_SUFFIX: x86_64-unknown-mingw32
TARBALL_EXT: zip