Commit Graph

179 Commits

Author SHA1 Message Date
Christoph Reiter
69ae2f4242 CI: Include coverage data of code which isn't executed by the test suite.
See comment in !151. Using the "--initial" option of lcov we collect
the coverage of all compiled files and merge them later into the final
report. This way we can see which files are built but never executed
by the test suite.

Because the --initial switch also collects files in the ccache directory
we have to point it to the build directory instead, which in turn breaks
--no-external. Instead of using --no-external in the collection step,
filter out any files not in the source tree in the final coverage job
through a path filter.
2018-07-06 09:36:01 +02:00
Xavier Claessens
543a9c4f33 ci: Fix dist-job missing gobject/gio documentation
This requires meson >= 0.47.0 otherwise building the doc fails:
https://github.com/mesonbuild/meson/issues/3379

While at it, no need to to pass --prefix --libdir to meson, other CIs
don't have them.
2018-07-03 11:00:54 -04:00
Xavier Claessens
9d73ea8975 ci: Update meson to 0.47.0 in docker image 2018-07-03 11:00:54 -04:00
Xavier Claessens
cf9613056c ci: Add latest Android API level 28
- Split the download part into a separate script to so docker keeps that
step in cache and avoid redownloading it.

- With API level >= 28 libiconv is not needed anymore because it's part
of Android's libc.

- Generate standalone toolchains to reduce the docker image size. It's
also easier because it doesn't need to pass sysroot args.

- Use clang compiler because gcc is deprecated in this Android NDK and
will be removed in the next release.
2018-06-27 09:23:13 -04:00
Xavier Claessens
b3508123e2 ci: factor out cross compilation jobs definitions 2018-06-27 09:18:05 -04:00
Ting-Wei Lan
064cb2b001 ci: Add FreeBSD CI
We use 'freebsd-11' instead of 'freebsd' as tags here because newer
FreeBSD versions can include API changes which are worth testing.
2018-06-26 23:18:04 +08:00
Xavier Claessens
94748af0e1 ci: Use shorter job names
Job names in gitlab pipeline view gets truncated to  "fedora-meson-..."
for all jobs which is not really useful. All our CIs are using Meson,
and the host distro is not relevant when doing cross builds.
2018-06-22 11:49:08 -04:00
Xavier Claessens
9a76e08ae1 ci: Update Android NDK to r17b
We should be testing latest NDK release but keep using API level 21 to
ensure GLib does not start using newer APIs. We could also later add a
runner for latest API level 28 which includes iconv API in Android's
libc so we don't need GNU libiconv anymore.
2018-06-22 11:49:08 -04:00
Xavier Claessens
7016aedde8 ci: Build fam module on linux 2018-06-07 11:33:43 -04:00
Xavier Claessens
79c1cd21f2 ci: Be consistent on artifact naming 2018-06-05 14:01:53 -04:00
Xavier Claessens
a4ccb4972c ci: No need to "cd _build" and set prefix/libdir 2018-06-05 13:58:48 -04:00
Xavier Claessens
34e0c5a799 ci: Add missing "except: tags" 2018-06-05 13:39:26 -04:00
Philip Withnall
4100c84c06 Merge branch 'msys2-export-meson-logs-artifacts' into 'master'
ci: Export meson-logs from msys2-mingw32 build as artifacts

See merge request GNOME/glib!33
2018-05-29 10:45:28 +00:00
Philip Withnall
91208e8d3f ci: Clarify artifact naming
Put the job name and commit identifier in the artifact names.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-05-29 10:54:29 +01:00
Philip Withnall
a53d74e078 ci: Always export artifacts from Fedora build
The default `when: on_success` means no artifacts are exported when the
tests fail, which is precisely when we want to see the artifacts.

Always export them, and rely on GitLab to garbage collect them as
appropriate (typically after 30 days, I think).

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-05-29 10:53:41 +01:00
Philip Withnall
1041504099 ci: Export meson-logs from msys2-mingw32 build as artifacts
This means that compilation and test failures will leave logs on the CI
machines which we can use to debug the failures.

Always export the artifacts. The default `when: on_success` is
appropriate for now, but won’t be in future when the tests actual report
their success value correctly.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-05-29 10:52:01 +01:00
Xavier Claessens
cd47f8d8de Revert "Add macosx CI"
Disable macosx CI until we get proper hosting, the test machine we had
is too old and slow.

This reverts commit 042b057e4d.
2018-05-28 13:58:06 -04:00
Xavier Claessens
042b057e4d Add macosx CI
Fixes #265.
2018-05-28 11:15:01 -04:00
Xavier Claessens
3145d88f4b Add mingw64 cross build CI
Fixes #1387.
2018-05-28 09:22:55 -04:00
Xavier Claessens
f83493f83d Add Android CI
This adds to the CI a cross build for Android NDK r16 API 21 (because
thats what GStreamer currently use) for arm64.

GNU iconv must be built manually into our docker image because Android
NDK doesn't seems to ship it. The latest NDK r17 API 28 has iconv.h but
iconv_open() symbol isn't found by the linker. Looks like broken NDK.

libffi also needs to be built manually because the meson subproject
doesn't support building for Android platform. It needs a recent RC
release because latest stable release is 4 years old and fails to
build.

Fixes #1385.
2018-05-28 09:17:41 -04:00
Christoph Reiter
5dfdcb372f ci: unify the test timeout multiplier across jobs
Introduce a MESON_TEST_TIMEOUT_MULTIPLIER env var and use it in all test scripts.
2018-05-26 20:19:53 +02:00
Christoph Reiter
e7259c52ba ci: Add a VS2017 job
Thanks to Xavier Claessens for figuring out what is needed.
2018-05-25 11:44:14 +02:00
Philip Withnall
524d96fd92 ci: Add a regex to parse line coverage statistics from genhtml output
GitLab can then use this to annotate each pipeline with its code
coverage statistics. It can only use one figure, so we choose lines
(rather than function or branch coverage) since it’s the most intuitive
figure.

This parses the ‘lines’ line from output like:

Overall coverage rate:
  lines......: 76.7% (108959 of 142122 lines)
  functions..: 80.7% (10294 of 12763 functions)
  branches...: 51.3% (50226 of 97953 branches)

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-05-24 23:44:53 +01:00
Christoph Reiter
3d2ab4680d ci: use timeout-multiplier=2 for running the tests
It looks like the coverage generation makes the tests a bit slower and
some are now hitting timeouts. Flaky tests are always more annoying than
slow ones, and we don't know how much resources we get under CI,
so increase the timeout.

https://bugzilla.gnome.org/show_bug.cgi?id=795636
2018-05-02 14:52:50 +02:00
Christoph Reiter
961be2b0bf ci: collect test coverage and deploy a html report through gitlab pages
Use lcov for both Fedora and MSYS2 to create coverage reports and add a second
ci stage which merges the coverage and creates a html report using genhtml.

In the final stage, which is only run on master, the result is published on
gitlab pages.

https://bugzilla.gnome.org/show_bug.cgi?id=795636
2018-05-02 11:14:45 +01:00
Christoph Reiter
e8798a4c22 ci: update meson
Rebuild the fedora docker image to get the newest meson release and
use pip to install the newest version for MSYS2.

https://bugzilla.gnome.org/show_bug.cgi?id=795711
2018-05-02 11:09:25 +01:00
Philip Withnall
a20c8d4421 ci: Rename build-job to fedora-meson-x86_64 for uniqueness
Makes it a bit more easily differentiable from the new `msys2-mingw32`
job.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-04-26 10:11:29 +01:00
Christoph Reiter
995f75cdd7 gitlab-ci: Add 32bit MinGW jobs using MSYS2
This builds glib using meson/ninja/ccache with mingw-w64 on a Windows
machine.

The CI scripts expect a gitlab runner to exist with the "win32" tag
which uses the default "cmd" shell by default.

Before running the tests pacman is invoked to update the system
(potentially including bash etc, thus the extra step)
Then a login shell is started with CHERE_INVOKING to not change the
cwd and finally the test script is executed.

https://bugzilla.gnome.org/show_bug.cgi?id=793729
2018-04-25 17:23:49 +02:00
Emmanuele Bassi
e04d2e81fc ci: Add GitLab CI description file
We're mostly interested into building and testing everything that gets
pushed to the repository — including merge requests.

When pushing tags, though, we should assume we're spinning a release, so
let's run the dist target, and store the tarball, and the generated
documentation while we're at it, as artifacts on GitLab.

The Dockerfile for the image used for the build is included in tree, and
published on Docker Hub. Using a custom image allows us to avoid the
costly "download and install build dependencies" phase, as well as
controlling the environment a little bit better.

https://bugzilla.gnome.org/show_bug.cgi?id=793635
2018-02-20 13:49:21 +00:00