summaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
blob: af8c93966093277627fdfd45587add120af00d75 (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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Dependencies are managed in the Dockerfile in the inkscape-ci-docker
# Git repository. Change them there, wait a bit, and then we'll use
# the new ones here in these builds.
image: registry.gitlab.com/inkscape/inkscape-ci-docker/master

variables:
  GIT_DEPTH: "10"

cache:
  paths:
    - ccache/

# Building inkscape
inkscape:linux:
  stage: build
  before_script:
    # CCache Config
    - mkdir -p ccache
    - export CCACHE_BASEDIR=${PWD}
    - export CCACHE_DIR=${PWD}/ccache
  script:
    - mkdir -p build/conf
    - ln -s . share/inkscape
    - cd build
    - cmake .. -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=$PWD/install_dir/
    - make -j3 install
    - make -j3 tests
    - cpack -G DEB
    - cd ..
  artifacts:
    expire_in: 1 year
    paths:
      - build/

inkscape:codequality:
    stage: build
    script:
        - git fetch https://gitlab.com/inkscape/inkscape.git
        - git diff FETCH_HEAD -U0 --no-color | clang-format-diff-6.0 -p1 -style file | tee clang_format_diff
        - if [[ -s clang_format_diff ]]; then false; fi
    allow_failure: true

inkscape:mac:
  stage: build
  tags:
    - mac
  only:
    - branches@inkscape/inkscape
  before_script:
    - brew update
    - brew upgrade
    # Tools
    - brew install cmake intltool libtool pkg-config ccache
    # Libraries
    - brew install bdw-gc boost gdl gettext gsl gtkmm3 gtkspell3 imagemagick@6 jemalloc libcdr libvisio libyaml libwpg pango popt poppler potrace libsoup
    # Testing tools
    # TODO
    # Cleanup
    - brew cleanup
    # CCache Config
    - mkdir -p ccache
    - export CCACHE_BASEDIR=${PWD}
    - export CCACHE_DIR=${PWD}/ccache
  script:
    - mkdir -p build
    - cd build
    - cmake .. -DCMAKE_PREFIX_PATH="/usr/local/opt/gettext;/usr/local/opt/imagemagick@6/;/usr/local/opt/icu4c/" -DWITH_OPENMP=OFF -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug
    - make -j1
    - cd ..
  artifacts:
    expire_in: 1 year
    paths:
      - build/
  allow_failure: true

inkscape:doc:
  stage: build
  only:
    - schedules
  script:
    - cd buildtools
    - doxygen Doxyfile
    - doxygen Doxyfile-extensions
    - cd ..
  artifacts:
    paths:
      - doc/doxygen
      - doc/doxygen-extensions

# This job is a static analysis build by clang.
# It takes MORE THAN 3 HOURS, and depending on worker sometimes 4 hours.
# Make sure the timeout of the build is big enough
clang:
  stage: build
  only:
    - schedules
  script:
    - apt-get update -yqq && apt-get install -y clang
    - mkdir -p clang-build
    - cd clang-build
    - scan-build cmake .. -DCMAKE_BUILD_TYPE=Debug
    - VERBOSE=1 scan-build -o ../scan make -j2
  artifacts:
    paths:
      - scan/

test:linux:
  stage: test
  dependencies:
    - inkscape:linux
  script:
    - cd build
    - make test
    - ctest -V

# uploads the clang scan to user.gitlab.io/inkscape/
pages:
  stage: deploy
  dependencies:
    - inkscape:doc
    - clang
  script:
    - mkdir -p public/
    - sed "s/%DATE%/$(date '+%B %d, %Y')/" buildtools/ci-index.html > public/index.html
    - if test -e scan; then cp -rv scan/* public/scan-build; fi
    - if test -e doc/doxygen; then cp -rv doc/doxygen/html public/doxygen; fi
    - if test -e doc/doxygen-extensions; then cp -rv doc/doxygen-extensions/html public/doxygen-extensions; fi
  artifacts:
    paths:
      - public
  only:
    - schedules