gitlab: Deploy documentation snapshot via GitLab Pages
[ghc.git] / .gitlab-ci.yml
1 variables:
2   GIT_SSL_NO_VERIFY: "1"
3
4   # Commit of ghc/ci-images repository from which to pull Docker images
5   DOCKER_REV: cefaee3c742af193e0f7783f87edb0d35374515c
6
7 before_script:
8   - python3 .gitlab/fix-submodules.py
9   - git submodule sync --recursive
10   - git submodule update --init --recursive
11   - git checkout .gitmodules
12   - "git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/perf || true"
13
14 stages:
15   - lint       # Source linting
16   - build      # A quick smoke-test to weed out broken commits
17   - full-build # Build all the things
18   - cleanup    # See Note [Cleanup on Windows]
19   - packaging  # Source distribution, etc.
20   - hackage    # head.hackage testing
21   - deploy     # push documentation
22
23 .only-default: &only-default
24   only:
25     - master
26     - /ghc-[0-9]+\.[0-9]+/
27     - merge_requests
28     - tags
29
30 ############################################################
31 # Runner Tags
32 ############################################################
33 #
34 # * x86_64-linux: Any Docker-capable x86_64 Linux machine
35 # * aarch64-linux: Any Docker-capable AArch64 Linux machine
36 # * x86_64-windows: A x86_64 Windows machine
37 # * lint: Any Docker-capable x86_64 Linux machine; distinct from
38 #         x86_64-linux to ensure low-latency availability.
39 #
40
41
42 ############################################################
43 # Linting
44 ############################################################
45
46 ghc-linters:
47   stage: lint
48   image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
49   script:
50     - git fetch origin
51     - git checkout "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
52     - git reset --hard "origin/$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
53     - echo "$CI_MERGE_REQUEST_ID"
54     - echo "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME"
55     - echo "$CI_COMMIT_SHA"
56     - base="$(git merge-base $CI_MERGE_REQUEST_TARGET_BRANCH_NAME $CI_COMMIT_SHA)"
57     - echo $base
58     #    - validate-commit-msg .git $(git rev-list $base..$CI_COMMIT_SHA)
59     - validate-whitespace .git $(git rev-list $base..$CI_COMMIT_SHA)
60     - .gitlab/linters/check-makefiles.py $base $CI_COMMIT_SHA
61     - .gitlab/linters/check-cpp.py $base $CI_COMMIT_SHA
62   dependencies: []
63   tags:
64     - lint
65   only:
66     refs:
67       - merge_requests
68
69 # We allow the submodule checker to fail when run on merge requests (to
70 # accomodate, e.g., haddock changes not yet upstream) but not on `master` or
71 # Marge jobs.
72 .lint-submods:
73   stage: lint
74   image: "registry.gitlab.haskell.org/ghc/ci-images/linters:$DOCKER_REV"
75   script:
76     - submodchecker .git $(git rev-list $base..$CI_COMMIT_SHA)
77   dependencies: []
78   tags:
79     - lint
80
81 lint-submods:
82   extends: .lint-submods
83   only:
84     refs:
85       - master
86       - /ghc-[0-9]+\.[0-9]+/
87       - wip/marge_bot_batch_merge_job
88
89 lint-submods-mr:
90   extends: .lint-submods
91   allow_failure: true
92   only:
93     refs:
94       - merge_requests
95
96 ############################################################
97 # Validation via Pipelines (hadrian)
98 ############################################################
99
100 .validate-hadrian:
101   <<: *only-default
102   allow_failure: true
103   script:
104     - cabal update
105     - git clean -xdf && git submodule foreach git clean -xdf
106     - bash .circleci/prepare-system.sh
107     - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi
108     - ./boot
109     - ./configure $CONFIGURE_ARGS
110     - hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` --docs=no-sphinx binary-dist
111     - mv _build/bindist/ghc*.tar.xz ghc.tar.xz
112   cache:
113     key: hadrian
114     paths:
115       - cabal-cache
116   artifacts:
117     when: always
118     paths:
119       - ghc.tar.xz
120
121 validate-x86_64-linux-deb8-hadrian:
122   extends: .validate-hadrian
123   stage: build
124   image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb8:$DOCKER_REV"
125   before_script:
126     # workaround for docker permissions
127     - sudo chown ghc:ghc -R .
128     - python3 .gitlab/fix-submodules.py
129     - git submodule sync --recursive
130     - git submodule update --init --recursive
131     - git checkout .gitmodules
132     - "git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/perf || true"
133   tags:
134     - x86_64-linux
135
136 hadrian-ghc-in-ghci:
137   <<: *only-default
138   stage: build
139   image: ghcci/x86_64-linux-deb8:0.1
140   before_script:
141     # workaround for docker permissions
142     - sudo chown ghc:ghc -R .
143     - python3 .gitlab/fix-submodules.py
144     - git submodule sync --recursive
145     - git submodule update --init --recursive
146     - git checkout .gitmodules
147   tags:
148     - x86_64-linux
149   script:
150     - cabal update
151     - git clean -xdf && git submodule foreach git clean -xdf
152     - bash .circleci/prepare-system.sh
153     - if [[ -d ./cabal-cache ]]; then cp -R ./.cabal-cache ~/.cabal-cache; fi
154     - ./boot
155     - ./configure $CONFIGURE_ARGS
156     # Load ghc-in-ghci then immediately exit
157     - echo ":q" | hadrian/ghci.sh
158   cache:
159     key: hadrian-ghci
160     paths:
161       - cabal-cache
162
163 ############################################################
164 # Validation via Pipelines (make)
165 ############################################################
166
167 .validate:
168   <<: *only-default
169   variables:
170     TEST_TYPE: test
171   before_script:
172     - git clean -xdf && git submodule foreach git clean -xdf
173   script:
174     - ./boot
175     - ./configure $CONFIGURE_ARGS
176     - |
177       THREADS=`mk/detect-cpu-count.sh`
178       make V=0 -j$THREADS WERROR=-Werror
179     - |
180       make binary-dist TAR_COMP_OPTS="-1"
181     - |
182       # Prepare to push git notes.
183       METRICS_FILE=$(mktemp)
184       git config user.email "ben+ghc-ci@smart-cactus.org"
185       git config user.name "GHC GitLab CI"
186     - |
187       THREADS=`mk/detect-cpu-count.sh`
188       make $TEST_TYPE THREADS=$THREADS JUNIT_FILE=../../junit.xml METRICS_FILE=$METRICS_FILE
189     - |
190       # Push git notes.
191       METRICS_FILE=$METRICS_FILE .gitlab/push-test-metrics.sh
192   dependencies: []
193   artifacts:
194     reports:
195       junit: junit.xml
196     expire_in: 2 week
197     paths:
198       - ghc-*.tar.xz
199       - junit.xml
200
201 #################################
202 # x86_64-darwin
203 #################################
204
205 validate-x86_64-darwin:
206   extends: .validate
207   stage: full-build
208   tags:
209     - x86_64-darwin
210   variables:
211     GHC_VERSION: 8.6.3
212     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-apple-darwin.tar.xz"
213     MACOSX_DEPLOYMENT_TARGET: "10.7"
214     # Only Sierra and onwards supports clock_gettime. See #12858
215     ac_cv_func_clock_gettime: "no"
216     LANG: "en_US.UTF-8"
217     CONFIGURE_ARGS: --with-intree-gmp
218     TEST_ENV: "x86_64-darwin"
219   before_script:
220     - git clean -xdf && git submodule foreach git clean -xdf
221     - python3 .gitlab/fix-submodules.py
222     - git submodule sync --recursive
223     - git submodule update --init --recursive
224     - git checkout .gitmodules
225     - "git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/perf || true"
226
227     - bash .gitlab/darwin-init.sh
228     - PATH="`pwd`/toolchain/bin:$PATH"
229   after_script:
230     - cp -Rf $HOME/.cabal cabal-cache
231   artifacts:
232     when: always
233     expire_in: 2 week
234   cache:
235     key: darwin
236     paths:
237       - cabal-cache
238       - toolchain
239
240 .validate-linux:
241   extends: .validate
242   tags:
243     - x86_64-linux
244   before_script:
245     - git clean -xdf && git submodule foreach git clean -xdf
246     - python3 .gitlab/fix-submodules.py
247     - git submodule sync --recursive
248     - git submodule update --init --recursive
249     - git checkout .gitmodules
250     - "git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/perf || true"
251
252     - bash .circleci/prepare-system.sh
253     # workaround for docker permissions
254     - sudo chown ghc:ghc -R .
255   after_script:
256     - cp -Rf $HOME/.cabal cabal-cache
257   cache:
258     key: linux
259     paths:
260       - cabal-cache
261       - toolchain
262
263 #################################
264 # aarch64-linux-deb9
265 #################################
266
267 .build-aarch64-linux-deb9:
268   extends: .validate-linux
269   stage: full-build
270   image: "registry.gitlab.haskell.org/ghc/ci-images/aarch64-linux-deb9:$DOCKER_REV"
271   allow_failure: true
272   variables:
273     TEST_ENV: "aarch64-linux-deb9"
274     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-aarch64-linux-deb9.tar.xz"
275   cache:
276     key: linux-aarch64-deb9
277   tags:
278     - aarch64-linux
279
280 validate-aarch64-linux-deb9:
281   extends: .build-aarch64-linux-deb9
282   artifacts:
283     when: always
284     expire_in: 2 week
285
286 nightly-aarch64-linux-deb9:
287   extends: .build-aarch64-linux-deb9
288   artifacts:
289     expire_in: 2 year
290   variables:
291     TEST_TYPE: slowtest
292   only:
293     variables:
294       - $NIGHTLY
295
296 #################################
297 # i386-linux-deb9
298 #################################
299
300 .build-i386-linux-deb9:
301   extends: .validate-linux
302   stage: full-build
303   image: "registry.gitlab.haskell.org/ghc/ci-images/i386-linux-deb9:$DOCKER_REV"
304   variables:
305     TEST_ENV: "i386-linux-deb9"
306     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-i386-deb9-linux.tar.xz"
307   cache:
308     key: linux-i386-deb9
309
310 validate-i386-linux-deb9:
311   extends: .build-i386-linux-deb9
312   artifacts:
313     when: always
314     expire_in: 2 week
315
316 nightly-i386-linux-deb9:
317   extends: .build-i386-linux-deb9
318   variables:
319     TEST_TYPE: slowtest
320   artifacts:
321     when: always
322     expire_in: 2 week
323   only:
324     variables:
325       - $NIGHTLY
326
327 #################################
328 # x86_64-linux-deb9
329 #################################
330
331 .build-x86_64-linux-deb9:
332   extends: .validate-linux
333   stage: full-build
334   image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
335   variables:
336     TEST_ENV: "x86_64-linux-deb9"
337     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-deb9-linux.tar.xz"
338   cache:
339     key: linux-x86_64-deb9
340
341 validate-x86_64-linux-deb9:
342   extends: .build-x86_64-linux-deb9
343   artifacts:
344     when: always
345     expire_in: 2 week
346
347 nightly-x86_64-linux-deb9:
348   extends: .build-x86_64-linux-deb9
349   artifacts:
350     expire_in: 2 year
351   variables:
352     TEST_TYPE: slowtest
353   only:
354     variables:
355       - $NIGHTLY
356
357 # N.B. Has DEBUG assertions enabled in stage2
358 validate-x86_64-linux-deb9-debug:
359   extends: .build-x86_64-linux-deb9
360   stage: build
361   variables:
362     BUILD_FLAVOUR: validate
363     TEST_ENV: "x86_64-linux-deb9-debug"
364
365 validate-x86_64-linux-deb9-llvm:
366   extends: .build-x86_64-linux-deb9
367   stage: full-build
368   variables:
369     BUILD_FLAVOUR: perf-llvm
370     TEST_ENV: "x86_64-linux-deb9-llvm"
371
372 validate-x86_64-linux-deb9-integer-simple:
373   extends: .build-x86_64-linux-deb9
374   stage: full-build
375   variables:
376     INTEGER_LIBRARY: integer-simple
377     TEST_ENV: "x86_64-linux-deb9-integer-simple"
378     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-deb9-linux-integer-simple.tar.xz"
379
380 nightly-x86_64-linux-deb9-integer-simple:
381   extends: .build-x86_64-linux-deb9
382   stage: full-build
383   variables:
384     INTEGER_LIBRARY: integer-simple
385     TEST_ENV: "x86_64-linux-deb9-integer-simple"
386     TEST_TYPE: slowtest
387   artifacts:
388     expire_in: 2 year
389   only:
390     variables:
391       - $NIGHTLY
392
393 validate-x86_64-linux-deb9-unreg:
394   extends: .build-x86_64-linux-deb9
395   stage: full-build
396   variables:
397     CONFIGURE_ARGS: --enable-unregisterised
398     TEST_ENV: "x86_64-linux-deb9-unreg"
399
400
401 #################################
402 # x86_64-linux-deb8
403 #################################
404
405 release-x86_64-linux-deb8:
406   extends: .validate-linux
407   stage: full-build
408   image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb8:$DOCKER_REV"
409   variables:
410     TEST_ENV: "x86_64-linux-deb8"
411     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-deb8-linux.tar.xz"
412   only:
413     - tags
414   cache:
415     key: linux-x86_64-deb8
416   artifacts:
417     when: always
418     expire_in: 2 week
419
420
421 #################################
422 # x86_64-linux-fedora27
423 #################################
424
425 validate-x86_64-linux-fedora27:
426   extends: .validate-linux
427   stage: full-build
428   image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-fedora27:$DOCKER_REV"
429   variables:
430     TEST_ENV: "x86_64-linux-fedora27"
431     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-fedora27-linux.tar.xz"
432   cache:
433     key: linux-x86_64-fedora27
434   artifacts:
435     when: always
436     expire_in: 2 week
437
438 ############################################################
439 # Validation via Pipelines (Windows)
440 ############################################################
441
442 .build-windows:
443   <<: *only-default
444   before_script:
445     - git clean -xdf
446     - git submodule foreach git clean -xdf
447
448     # Use a local temporary directory to ensure that concurrent builds don't
449     # interfere with one another
450     - |
451       mkdir tmp
452       set TMP=%cd%\tmp
453       set TEMP=%cd%\tmp
454
455     - set PATH=C:\msys64\usr\bin;%PATH%
456     - python .gitlab/fix-submodules.py
457     - git submodule sync --recursive
458     - git submodule update --init --recursive
459     - git checkout .gitmodules
460     - "git fetch https://gitlab.haskell.org/ghc/ghc-performance-notes.git refs/notes/perf:refs/notes/perf || true"
461     - bash .gitlab/win32-init.sh
462   after_script:
463     - rd /s /q tmp
464     - robocopy /np /nfl /ndl /e "%APPDATA%\cabal" cabal-cache
465     - bash -c 'make clean || true'
466   dependencies: []
467   variables:
468     FORCE_SYMLINKS: 1
469     LANG: "en_US.UTF-8"
470   cache:
471     paths:
472       - cabal-cache
473       - ghc-8.6.2
474       - ghc-tarballs
475
476 .build-windows-hadrian:
477   extends: .build-windows
478   stage: full-build
479   variables:
480     GHC_VERSION: "8.6.2"
481   script:
482     - |
483       python boot
484       bash -c './configure --enable-tarballs-autodownload GHC=`pwd`/toolchain/bin/ghc HAPPY=`pwd`/toolchain/bin/happy ALEX=`pwd`/toolchain/bin/alex'
485     - bash -c "PATH=`pwd`/toolchain/bin:$PATH hadrian/build.cabal.sh -j`mk/detect-cpu-count.sh` --flavour=Quick --docs=no-sphinx binary-dist"
486     - mv _build/bindist/ghc*.tar.xz ghc.tar.xz
487     # FIXME: Testsuite disabled due to #16156.
488     # - bash -c 'make V=0 test THREADS=`mk/detect-cpu-count.sh` JUNIT_FILE=../../junit.xml'
489   tags:
490     - x86_64-windows
491   artifacts:
492     when: always
493     paths:
494       - ghc.tar.xz
495
496 validate-x86_64-windows-hadrian:
497   extends: .build-windows-hadrian
498   variables:
499     MSYSTEM: MINGW64
500   cache:
501     key: x86_64-windows-hadrian
502
503 nightly-i386-windows-hadrian:
504   extends: .build-windows-hadrian
505   variables:
506     MSYSTEM: MINGW32
507   only:
508     variables:
509       - $NIGHTLY
510   cache:
511     key: i386-windows-hadrian
512
513 .build-windows-make:
514   extends: .build-windows
515   stage: full-build
516   # due to #16084
517   allow_failure: true
518   variables:
519     BUILD_FLAVOUR: "quick"
520     GHC_VERSION: "8.6.2"
521     BIN_DIST_PREP_TAR_COMP: "bindistprep/ghc-x86_64-mingw32.tar.xz"
522   script:
523     - |
524       python boot
525       bash -c './configure --enable-tarballs-autodownload GHC=`pwd`/toolchain/bin/ghc HAPPY=`pwd`/toolchain/bin/happy ALEX=`pwd`/toolchain/bin/alex $CONFIGURE_ARGS'
526     - bash -c "echo include mk/flavours/${BUILD_FLAVOUR}.mk > mk/build.mk"
527     - bash -c "PATH=`pwd`/toolchain/bin:$PATH make -j`mk/detect-cpu-count.sh`"
528     - bash -c "PATH=`pwd`/toolchain/bin:$PATH make binary-dist TAR_COMP_OPTS=-1"
529     - bash -c 'make V=0 test THREADS=`mk/detect-cpu-count.sh` JUNIT_FILE=../../junit.xml'
530   tags:
531     - x86_64-windows
532   artifacts:
533     when: always
534     expire_in: 2 week
535     reports:
536       junit: junit.xml
537     paths:
538       - ghc-*.tar.xz
539       - junit.xml
540
541 validate-x86_64-windows:
542   extends: .build-windows-make
543   variables:
544     MSYSTEM: MINGW64
545     CONFIGURE_ARGS: "--target=x86_64-unknown-mingw32"
546   cache:
547     key: x86_64-windows
548
549 # Normal Windows validate builds are profiled; that won't do for releases.
550 release-x86_64-windows:
551   extends: validate-x86_64-windows
552   variables:
553     MSYSTEM: MINGW64
554     BUILD_FLAVOUR: "perf"
555     CONFIGURE_ARGS: "--target=x86_64-unknown-mingw32"
556   only:
557     - tags
558
559 release-i386-windows:
560   extends: .build-windows-make
561   only:
562     - tags
563   variables:
564     MSYSTEM: MINGW32
565     BUILD_FLAVOUR: "perf"
566     CONFIGURE_ARGS: "--target=i386-unknown-mingw32"
567   cache:
568     key: i386-windows
569
570 nightly-i386-windows:
571   extends: .build-windows-make
572   only:
573     variables:
574       - $NIGHTLY
575   variables:
576     MSYSTEM: MINGW32
577     CONFIGURE_ARGS: "--target=i386-unknown-mingw32"
578   cache:
579     key: i386-windows
580
581 ############################################################
582 # Cleanup
583 ############################################################
584
585 # Note [Cleaning up after shell executor]
586 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
587 #
588 # As noted in [1], gitlab-runner's shell executor doesn't clean up its working
589 # directory after builds. Unfortunately, we are forced to use the shell executor
590 # on Windows. To avoid running out of disk space we add a stage at the end of
591 # the build to remove the \GitLabRunner\builds directory. Since we only run a
592 # single build at a time on Windows this should be safe.
593 #
594 # [1] https://gitlab.com/gitlab-org/gitlab-runner/issues/3856
595
596 # See Note [Cleanup after shell executor]
597 cleanup-windows:
598   <<: *only-default
599   stage: cleanup
600   tags:
601     - x86_64-windows
602   when: always
603   dependencies: []
604   before_script:
605     - echo "Time to clean up"
606   script:
607     - echo "Let's go"
608   after_script:
609     - set "BUILD_DIR=%CI_PROJECT_DIR%"
610     - set "BUILD_DIR=%BUILD_DIR:/=\%"
611     - echo "Cleaning %BUILD_DIR%"
612     - cd \GitLabRunner
613     # This is way more complicated than it should be:
614     # See https://stackoverflow.com/questions/1965787
615     - del %BUILD_DIR%\* /F /Q
616     - for /d %%p in (%BUILD_DIR%\*) do rd /Q /S "%%p"
617     - exit /b 0
618
619 # See Note [Cleanup after shell executor]
620 cleanup-darwin:
621   <<: *only-default
622   stage: cleanup
623   tags:
624     - x86_64-darwin
625   when: always
626   dependencies: []
627   before_script:
628     - echo "Time to clean up"
629   script:
630     - echo "Let's go"
631   after_script:
632     - BUILD_DIR=$CI_PROJECT_DIR
633     - echo "Cleaning $BUILD_DIR"
634     - cd $HOME
635     - rm -Rf $BUILD_DIR/*
636     - exit 0
637
638 ############################################################
639 # Packaging
640 ############################################################
641
642 doc-tarball:
643   <<: *only-default
644   stage: packaging
645   allow_failure: true
646   tags:
647     - x86_64-linux
648   image: ghcci/x86_64-linux-deb9:0.2
649   dependencies:
650     - validate-x86_64-linux-deb9
651     - validate-x86_64-windows
652   artifacts:
653     paths:
654       - haddock.html.tar.xz
655       - libraries.html.tar.xz
656       - users_guide.html.tar.xz
657       - index.html
658       - "*.pdf"
659   script:
660     - rm -Rf docs
661     - distrib/mkDocs/mkDocs ghc-x86_64-deb9-linux.tar.xz ghc-x86_64-mingw32.tar.xz
662     - ls -lh
663     - mv docs/*.tar.xz .
664
665 source-tarball:
666   stage: packaging
667   tags:
668     - x86_64-linux
669   image: ghcci/x86_64-linux-deb9:0.2
670   only:
671     - tags
672   artifacts:
673     paths:
674       - ghc-*.tar.xz
675       - version
676   script:
677     - mk/get-win32-tarballs.sh download all
678     - ./boot
679     - ./configure
680     - make sdist
681     - mv sdistprep/*.xz  .
682     - make show VALUE=version > version
683
684
685 ############################################################
686 # Testing via head.hackage
687 ############################################################
688
689 # Triggering jobs in the ghc/head.hackage project requires that we have a job
690 # token for that repository. Furthermore the head.hackage CI job must have
691 # access to an unprivileged access token with the ability to query the ghc/ghc
692 # project such that it can find the job ID of the fedora27 job for the current
693 # pipeline.
694
695 .hackage:
696   <<: *only-default
697   stage: hackage
698   image: ghcci/x86_64-linux-deb9:0.2
699   tags:
700     - x86_64-linux
701   dependencies: []
702   variables:
703     HEAD_HACKAGE_PROJECT_ID: "78"
704   script:
705     - bash .gitlab/start-head.hackage.sh
706
707 hackage:
708   extends: .hackage
709   when: manual
710
711 hackage-label:
712   extends: .hackage
713   only:
714     variables:
715       - $CI_MERGE_REQUEST_LABELS =~ /.*user-facing.*/
716
717 nightly-hackage:
718   extends: .hackage
719   only:
720     variables:
721       - $NIGHTLY
722
723 pages:
724   stage: deploy
725   dependencies:
726     - doc-tarball
727   image: ghcci/x86_64-linux-deb9:0.2
728   tags:
729     - x86_64-linux
730   script:
731     - mkdir -p public/doc
732     - tar -xf haddock.html.tar.xz -C public/doc
733     - tar -xf libraries.html.tar.xz -C public/doc
734     - tar -xf users_guide.html.tar.xz -C public/doc
735     - cp -f index.html public/doc
736   only:
737     - master
738   artifacts:
739     paths:
740       - public
741