summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: c774fab6d85826dacd85bd374d11a7f5fed0a414 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# This file controls GitLab CI (Continuous Integration) for FLTK.
#
# It serves two purposes:
#
# (1) Continuously building FLTK with one or more build systems.
# (2) Generating current HTML and PDF documentation and putting it online.
#
# The HTML documentation will be viewable at:
#
#   https://fltk.gitlab.io/fltk/
#
# The PDF documentation will be viewable at:
#
#   https://fltk.gitlab.io/fltk/fltk.pdf
#
# Details of this script:
#
# - use the official gcc or debian image
# - can use versions as well, like gcc:5.2 or debian:trixie
#
# see https://hub.docker.com/_/gcc/
#  or https://hub.docker.com/_/debian

image: debian:trixie

stages:
  - build
  - deploy

# Build with CMake and Ninja (with pango, cairo, building examples)

build-cmake:
  stage: build
  only:
    - master
  # install the necessary build tools
  before_script:
    - date
    - apt update && apt -y install build-essential cmake ninja-build git
    - apt -y install freeglut3-dev libfontconfig-dev libxft-dev libglew-dev libxcursor-dev libxinerama-dev libasound2-dev libcairo2-dev libpango1.0-dev
    - apt -y install libwayland-dev wayland-protocols libxkbcommon-dev libdbus-1-dev libdecor-0-dev libgtk-3-dev
  script:
    - date
    - gcc --version
    - git log -1
    - mkdir build && cd build
    - cmake -G Ninja -D CMAKE_BUILD_TYPE=Debug -D FLTK_BUILD_EXAMPLES=ON -D FLTK_USE_PANGO=ON -D FLTK_OPTION_CAIRO_WINDOW=ON ..
    - date
    - time ninja
    - date

# Generate and install HTML documentation

pages:
  stage: deploy
  only:
    - master
  # run this job (documentation) independent of the build jobs (empty "needs" clause)
  needs: []
  # install the necessary build tools
  before_script:
    - date
    - apt update && apt -y install build-essential cmake ninja-build git man doxygen-latex
    - apt -y install freeglut3-dev libfontconfig-dev libxft-dev libglew-dev libxcursor-dev libxinerama-dev libasound2-dev libcairo2-dev libpango1.0-dev
    - apt -y install libwayland-dev wayland-protocols libxkbcommon-dev libdbus-1-dev libdecor-0-dev libgtk-3-dev
    - apt -y install xvfb x11-xkb-utils xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic x11-apps
  script:
    - date
    - pwd
    - git log -1
    - doxygen --version
    - mkdir build && cd build
    - cmake -G Ninja -D CMAKE_BUILD_TYPE=Debug -D FLTK_OPTION_CAIRO_WINDOW=ON ..
    - echo "start Xvfb ..."
    - Xvfb :19 -screen 0 1024x768x16 &
    - export DISPLAY=:19
    - echo "generate HTML docs ..."
    - date; time ninja html
    - echo "generate PDF docs ..."
    - date; time ninja pdf
    - date
    - cd ..
    - pwd
    - mkdir -p public/
    - mv build/documentation/html/* public/
    - mv build/documentation/fltk.pdf public/
    - date
  artifacts:
    paths:
      - public
    # keep artifacts of the latest three weeks
    expire_in: 20 days