testsuite: Don't use git status to determine whether we are inside a repo
[ghc.git] / .gitlab-ci.yml
1 variables:
2   GIT_SSL_NO_VERIFY: "1"
3
4 before_script:
5   - python .gitlab/fix-submodules.py
6   - git submodule sync --recursive
7   - git submodule update --init --recursive
8   - git checkout .gitmodules
9
10 ############################################################
11 # Validation via Pipelines (hadrian)
12 ############################################################
13
14 .validate-hadrian:
15   script:
16     - bash .circleci/prepare-system.sh
17     - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi
18     - ./boot
19     - ./configure
20     - hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh`
21   cache:
22     key: hadrian
23     paths:
24       - cabal-cache
25   image: ghcci/x86_64-linux:0.0.8
26
27 .validate-x86_64-linux-hadrian:
28   extends: .validate-hadrian
29   before_script:
30     # workaround for docker permissions
31     - sudo chown ghc:ghc -R .
32   tags:
33     - x86_64-linux
34
35 ############################################################
36 # Validation via Pipelines (make)
37 ############################################################
38
39 .validate:
40   script:
41     - make clean || true
42     - ./boot
43     - ./configure
44     - |
45       THREADS=`mk/detect-cpu-count.sh`
46       make V=0 -j$THREADS HADDOCK_DOCS=NO
47     - |
48       make binary-dist TAR_COMP_OPTS="-1"
49       mv ghc-*.tar.xz ghc.tar.xz
50     - |
51       THREADS=`mk/detect-cpu-count.sh`
52       make test THREADS=$THREADS JUNIT_FILE=../../junit.xml
53   image: ghcci/x86_64-linux:0.0.8
54   artifacts:
55     when: always
56     reports:
57       junit: junit.xml
58     paths:
59       - ghc.tar.xz
60       - junit.xml
61
62 .validate-x86_64-darwin:
63   extends: .validate
64   tags:
65     - x86_64-darwin
66   variables:
67     GHC_VERSION: 8.6.2
68     MACOSX_DEPLOYMENT_TARGET: "10.7"
69     # Only Sierra and onwards supports clock_gettime. See #12858
70     ac_cv_func_clock_gettime: "no"
71   before_script:
72     - python .gitlab/fix-submodules.py
73     - git submodule sync --recursive
74     - git submodule update --init --recursive
75     - git checkout .gitmodules
76
77     - bash .gitlab/darwin-init.sh
78     - PATH="`pwd`/toolchain/bin:$PATH"
79       # Disable sphinx PDF output as MacTeX apparently doesn't provide xelatex
80     - echo "BUILD_SPHINX_PDF=NO" >> mk/build.mk
81   after_script:
82     - cp -Rf $HOME/.cabal cabal-cache
83   cache:
84     key: darwin
85     paths:
86       - cabal-cache
87       - toolchain
88
89 validate-x86_64-linux:
90   extends: .validate
91   tags:
92     - x86_64-linux
93   before_script:
94     - python .gitlab/fix-submodules.py
95     - git submodule sync --recursive
96     - git submodule update --init --recursive
97     - git checkout .gitmodules
98
99     - bash .circleci/prepare-system.sh
100     # workaround for docker permissions
101     - sudo chown ghc:ghc -R .
102   after_script:
103     - cp -Rf $HOME/.cabal cabal-cache
104   cache:
105     key: darwin
106     paths:
107       - cabal-cache
108       - toolchain
109
110 ############################################################
111 # Validation via Pipelines (make, Windows)
112 ############################################################
113
114 .validate-x86_64-windows:
115   variables:
116     GHC_VERSION: "8.6.2"
117   script:
118     - bash -e .gitlab/win32-init.sh
119     - |
120       set MSYSTEM=MINGW64
121       python boot
122       bash -c './configure --with-ghc=`pwd`/toolchain/bin/ghc --enable-tarballs-autodownload HappyCmd=`pwd`/toolchain/bin/happy AlexCmd=`pwd`/toolchain/bin/alex'
123       mkdir -p _build
124       cp -R inplace/mingw _build/mingw
125     - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` --flavour=Quick"
126     - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh binary-dist"
127     - mv ghc-*.tar.xz ghc.tar.xz
128     - bash -c 'make V=0 -j`mk/detect-cpu-count.sh` HADDOCK_DOCS=NO test THREADS=$THREADS JUNIT_FILE=../../junit.xml'
129     - cp -Rf $APPDATA/cabal cabal-cache
130   cache:
131     key: windows
132     paths:
133       - cabal-cache
134       - ghc-8.6.2
135       - ghc-tarballs
136   tags:
137     - x86_64-windows
138
139
140 ############################################################
141 # Validation via CircleCI
142 ############################################################
143
144 .circleci:
145   image: ghcci/x86_64-linux:0.0.8
146   tags:
147     - circleci
148   before_script:
149     - mkdir -p ~/.ssh
150     - chmod 700 ~/.ssh
151     #- git config --global user.email "user@example.com"
152     #- git config --global user.name "User name"
153     - echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
154     - chmod 644 ~/.ssh/known_hosts
155     #- sudo apt-get update -y
156     #- sudo apt-get install jq wget -y
157     #- 'which ssh-agent || sudo apt-get install openssh-client -y'
158     - eval $(ssh-agent -s)
159     ## Add the SSH key stored in SSH_PRIVATE_KEY variable to the agent store
160     ## We're using tr to fix line endings which makes ed25519 keys work
161     ## without extra base64 encoding.
162     ## https://gitlab.com/gitlab-examples/ssh-private-key/issues/1#note_48526556
163
164     - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null
165   artifacts:
166     when: always
167     reports:
168       junit: junit.xml
169     paths:
170       - ghc.tar.xz
171       - junit.xml
172
173 # All validation jobs keep the bindists and test results are artifacts,
174 # when we get far enough to generate them.
175 #
176 # This requires updating the maximum artifacts size limit in Gitlab to
177 # something like 200MB.
178
179 circleci-validate-x86_64-linux:
180   extends: .circleci
181   script: ".gitlab/circle-ci-job.sh validate-x86_64-linux"
182
183 circleci-validate-i386-linux:
184   extends: .circleci
185   script: ".gitlab/circle-ci-job.sh validate-i386-linux"
186
187 # circleci-validate-x86_64-freebsd:
188 #   extends: .circleci
189 #   script: ".gitlab/circle-ci-job.sh validate-x86_64-freebsd"
190
191 circleci-validate-x86_64-darwin:
192   extends: .circleci
193   script: ".gitlab/circle-ci-job.sh validate-x86_64-darwin"