Merge branch '640-appinfo-skip-display' into 'master'
[glib.git] / .gitlab-ci.yml
blob69f28c8bb868b7c8dbca47bafd5cbc73ecfcde7c
1 image: registry.gitlab.gnome.org/gnome/glib/master:v6
3 stages:
4   - build
5   - coverage
6   - deploy
8 cache:
9   paths:
10     - _ccache/
12 variables:
13   MESON_TEST_TIMEOUT_MULTIPLIER: 2
15 fedora-x86_64:
16   stage: build
17   except:
18     - tags
19   variables:
20     CFLAGS: "-coverage -ftest-coverage -fprofile-arcs"
21   script:
22     - meson --buildtype debug --werror -Dsystemtap=true -Ddtrace=true -Dfam=true _build .
23     - ninja -C _build
24     - mkdir -p _coverage
25     - lcov --rc lcov_branch_coverage=1 --directory _build --capture --initial --output-file "_coverage/${CI_JOB_NAME}-baseline.lcov"
26     - meson test -C _build --timeout-multiplier ${MESON_TEST_TIMEOUT_MULTIPLIER}
27     - lcov --rc lcov_branch_coverage=1 --directory _build --capture --output-file "_coverage/${CI_JOB_NAME}.lcov"
28   artifacts:
29     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
30     when: always
31     paths:
32       - "_build/meson-logs"
33       - "_coverage"
35 .cross-template: &cross-template
36   stage: build
37   except:
38     - tags
39   artifacts:
40     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
41     when: always
42     paths:
43       - "_build/meson-logs"
45 cross-android_api21_arm64:
46   <<: *cross-template
47   script:
48     # FIXME: add --werror
49     - meson --cross-file=/opt/cross_file_android_arm64_21.txt -Diconv=gnu -Dinternal_pcre=true --buildtype debug _build
50     - ninja -C _build
52 cross-android_api28_arm64:
53   <<: *cross-template
54   script:
55     # FIXME: add --werror
56     - meson --cross-file=/opt/cross_file_android_arm64_28.txt -Dinternal_pcre=true --buildtype debug _build
57     - ninja -C _build
59 cross-mingw64:
60   <<: *cross-template
61   script:
62     # FIXME: Add --werror
63     - meson --cross-file=/opt/cross_file_mingw64.txt --buildtype debug _build
64     - ninja -C _build
66 msys2-mingw32:
67   stage: build
68   except:
69     - tags
70   tags:
71     - win32
72   variables:
73     MSYSTEM: "MINGW32"
74     CHERE_INVOKING: "yes"
75   script:
76     - C:\msys64\usr\bin\pacman --noconfirm -Syyuu --ask 20
77     - C:\msys64\usr\bin\bash -lc "bash -x ./.gitlab-ci/test-msys2.sh"
78   artifacts:
79     name: "glib-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
80     when: always
81     paths:
82       - _build/meson-logs
83       - _coverage/
85 vs2017-x64:
86   stage: build
87   except:
88     - tags
89   tags:
90     - win32
91   script:
92     - .gitlab-ci/test-msvc.bat
93   artifacts:
94     name: "glib-%CI_JOB_NAME%-%CI_COMMIT_REF_NAME%"
95     when: always
96     paths:
97       - _build/meson-logs
99 freebsd-11-x86_64:
100   stage: build
101   tags:
102     # To run a FreeBSD builder, install gitlab-runner package and start both
103     # gitlab-runner and dbus service because we need /var/lib/dbus/machine-id.
104     # To compile GLib, you still have to install the following packages:
105     # desktop-file-utils gettext libiconv meson pkgconf python3 shared-mime-info
106     - freebsd-11
107   variables:
108     # CPPFLAGS is required because libintl doesn't use pkg-config.
109     CPPFLAGS: -I/usr/local/include
110     # FIXME: Workaround meson inability to set LD_LIBRARY_PATH.
111     # https://github.com/mesonbuild/meson/issues/1383
112     # https://github.com/mesonbuild/meson/issues/1635
113     # https://github.com/mesonbuild/meson/issues/2881
114     LDFLAGS: -L/usr/local/lib -Wl,--disable-new-dtags
115     # FreeBSD doesn't have C.UTF-8 locale.
116     LANG: en_US.UTF-8
117   script:
118     # We cannot use -Wl,--no-undefined because GLib uses 'environ' variable.
119     # FreeBSD iconv doesn't handle transliteration, so we use GNU libiconv here.
120     # FreeBSD supports xattr, but its API is different from Linux xattr.
121     # FIXME: extattr(2) support: https://gitlab.gnome.org/GNOME/glib/issues/1404
122     - meson -Db_lundef=false -Diconv=gnu -Dxattr=false --buildtype debug _build
123     - ninja -C _build
124     - meson test -C _build --timeout-multiplier "${MESON_TEST_TIMEOUT_MULTIPLIER}"
125   # FIXME: Remove this when we have a stable FreeBSD runner
126   # https://gitlab.gnome.org/Infrastructure/GitLab/issues/286
127   allow_failure: true
128   except:
129     - tags
130   artifacts:
131     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
132     when: always
133     paths:
134       - "_build/meson-logs"
136 coverage:
137   stage: coverage
138   artifacts:
139     name: "glib-${CI_JOB_NAME}-${CI_COMMIT_REF_NAME}"
140     paths:
141       - _coverage/
142   script:
143     - bash -x ./.gitlab-ci/coverage-docker.sh
144   coverage: '/^\s+lines\.+:\s+([\d.]+\%)\s+/'
146 pages:
147   stage: deploy
148   only:
149     - master
150   script:
151     - mv _coverage/ public/
152   artifacts:
153     paths:
154       - public
156 dist-job:
157   stage: build
158   only:
159     - tags
160   script:
161     - meson --buildtype release -Dgtk_doc=true -Dman=true _build
162     - cd _build
163     - ninja dist
164     - ninja glib-doc gobject-doc gio-doc
165     - tar -c -f "glib-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/glib html
166     - tar -c -f "gobject-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/gobject html
167     - tar -c -f "gio-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/gio html
168   artifacts:
169     paths:
170       - "${CI_PROJECT_DIR}/_build/glib-docs.tar.xz"
171       - "${CI_PROJECT_DIR}/_build/gobject-docs.tar.xz"
172       - "${CI_PROJECT_DIR}/_build/gio-docs.tar.xz"
173       - "${CI_PROJECT_DIR}/_build/meson-dist/glib-*.tar.xz"