Commit graph

65 commits

Author SHA1 Message Date
Thomas Haller 81e0837678
gitlab-ci: install missing packages on Alpine Linux
The "contrib/alpine/REQUIRED_PACKAGES" script is also
used by gitlab-ci to setup the test container. These
packages are required for unit tests.
2020-12-23 10:48:26 +01:00
Thomas Haller a1002bd93a
gitlab-ci: enable test build on alpine linux
Alpine is especially interesting because it uses musl as libc.

The build does not yet succeed. There are several issues that
need to be fixed.

However, it will be simpler to fix things, if we have tests
in place -- even if at the moment they are known to be broken.

See-also: https://git.alpinelinux.org/aports/tree/community/networkmanager?h=master
2020-12-11 18:14:10 +01:00
Thomas Haller a6e234349c
gitlab-ci: update used "ci-templates" version 2020-12-11 18:14:10 +01:00
Thomas Haller 4ce62b6df3
gitlab-ci: fix failure to enable PowerTools on CentOS8 build
Seems that the repository was renamed (or can sometimes have
a different name). Try both the "PowerTools" and "powertools" name.
2020-12-11 18:06:52 +01:00
Thomas Haller d07cd5dbf2
all: avoid GNU "which" from shell scripts
"which" is a separate package and may not be installed.
Also, shell has a built-in command for the same purpose.
Use that.
2020-12-11 16:42:23 +01:00
Thomas Haller 9960c8d727
gitlab-ci: add CentOS 7.9 and 8.2 images 2020-11-24 18:44:11 +01:00
Peter Hutterer 133de4ab59
gitlab CI: remove leftover comments referring to libinput
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/684
2020-11-18 08:36:13 +01:00
Thomas Haller 0e7e88cfc7
gitlab-ci: combine ubuntu/centos install scripts with their debian/fedora counterparts
Ubuntu/Debian and CentOS/Fedora are sufficiently similar that it's
better that we have only one variant of ".gitlab-ci/*-install.sh"
and "contrib/*/REQUIRED_PACKAGES".

This was already the case, however, we used to symlink
".gitlab-ci/centos-install.sh" to "fedora-install.sh". That
worked, but it didn't scale very well. For example, if we would follow
that pattern, we would also need a symlink "contrib/centos/REQUIRED_PACKAGES"
Or should "contrib/centos" symlink to "contrib/fedora"? That seems even
more wrong.

We already had the "distro.base_type" variable for that. Make use of
that also for the install script.
2020-11-17 13:28:18 +01:00
Thomas Haller f1ff6fe8b7
gitlab-ci: install correct version of ci-templates in build script
It's not clear that ci-fairy has a stable API. Instead, we pin the
version by specifying the git commit sha.

In the build script, install the pinned version.
2020-11-17 09:48:48 +01:00
Thomas Haller 539c00a8a1
gitlab-ci: automatically hash build scripts into tag for ci-templates container
ci-templates builds and caches the test containers. When the build
scripts, the ci-template or "config.yml" changes, we need to bump
the tag so that the containers get rebuild.

Partly automate this. The tag now gets generated by the template and
contains a checksum of certain build files. Thus, if you change
any build files, then `ci-fairy generate-template` would generate a
different tag. You can not miss that, because we have tests that ensure
that our ".gitlab-ci.yml" is up to date. Also, you no longer need to
manually bump the tag when a build script changes, just regenerate
".gitlab-ci.yml" with `ci-fairy generate-template`.

See also: https://gitlab.freedesktop.org/freedesktop/ci-templates/-/merge_requests/54
2020-11-17 09:40:35 +01:00
Thomas Haller 8df0dee3e8
gitlab-ci: automatically run prep-container to fix hanging tests
The goal is to run most distros only manually. However, it would be nice
to avoid (manually) clicking twice to start the tests for one distro:
once for the container preparation, and once for the actual test.

Previously, the container prep part was set to manual and the actual
test automatic. It worked almost as desired, except that this leads
to the entire gitlab-ci pipeline be be in running state indefinitely.

To fix that, always run the container prep steps. If the container is
cached, this is supposed to be fast and cheap. Now only the actual tests
are marked as "manual".
2020-11-11 08:50:17 +01:00
Thomas Haller 767c83f443
gitlab-ci: add "needs" for pages test
It seems "pages" test does not get properly triggered, if only
t_fedora:33 completes. It should, because the other distros are
optional. Try to set "needs" to fix that.
2020-11-11 08:47:16 +01:00
Thomas Haller b96d48efca
gitlab-ci: fix building artifacts (pages) during gitlab-ci test 2020-11-10 19:43:55 +01:00
Thomas Haller 9ebf5f938c
gitlab-ci: bump default-tag 2020-11-10 13:51:29 +01:00
Thomas Haller 7fa122394c
gitlab-ci: merge "check-ci-script" test with static checks
Certain parts of the code are entirely generated or must follow
a certain format that can be enforced by a tool. These invariants
must never fail:

  - ci-fairy generate-template (check-ci-script)
  - black python formatting
  - clang-format C formatting
  - msgfmt -vs

On the other hand, we also have a checkpatch script that checks
the current patch for common errors. These are heuristics and
only depend on the current patch (contrary to the previous type
that depend on the entire source tree).

Refactor the gitlab-ci tests:

- split "checkpatch" into "check-patch" and "check-tree".

- merge the "check-ci-script" test into "check-tree".
2020-11-10 13:51:29 +01:00
Thomas Haller aab7cf2065
gitlab-ci: don't explicitly install black/clang/gettext during checkpatch stage
"checkpatch" is based on the default image (currently fedora:33). It
already has these dependencies installed.
2020-11-09 10:53:55 +01:00
Thomas Haller f19f3f74c6
gitlab-ci: add ubuntu:20.04 test and reorder versions 2020-11-09 10:48:05 +01:00
Thomas Haller cfc7688ec2
gitlab-ci: let Fedora 33 test always run
That is now the one that generates the pages and runs checkpatch stage.
2020-11-09 10:46:19 +01:00
Thomas Haller b780f9315c
gitlab-ci: generate pages on Fedora 33 image
On one image we do extra work, like generating documentation (gitlab-pages).
The same image is currently also used for the "checkpatch" step. That step
checks code formatting using clang-format. The formatting depends on the
clang version, and we currently choose Fedora 33 as the desired version
for formatting.

It means, the "checkpatch" step requires Fedora 33. We could choose a
different image for generating pages and run check patch. However, that
might not be best. Just also generate the pages using Fedora 33.
2020-11-09 10:34:19 +01:00
Thomas Haller 52c6891534
gitlab-ci: reorder jobs for checkpatch test
All the steps of "checkpatch" test (except the last) check
the current tree for consistency. Those checks must always
pass.

Only the last step calls the "checkpatch-feature-branch.sh".
That script checks for common patterns, like avoiding g_assert()
(in favor of other assertion types). That last check only checks
the current patch, and there are many cases where the test is
known to fail (because these are just heuristics). As such, the
step that may fail should be called as last.
2020-11-09 09:35:59 +01:00
Peter Hutterer 35334f478b
gitlab CI: switch to using ci-templates
ci-templates encourages building specific containers that can be re-used:
- containers are re-used across pipelines, producing consistent results
- containers are re-used by contributors since they will use the upstream
  containers for their MR, thus guaranteeing the same results.

Containers are automatically rebuild whenever the respective
FDO_DISTRIBUTION_TAG changes. This is particularly interesting now that
Docker Hub will introduce pull limits.

This CI script consists of a config file and a jinja2 template, simply
running 'ci-fairy generate-template' produces the .gitlab-ci.yml.
ci-fairy is part of the freedesktop.org ci-templates and can be pip
installed, see the check-ci-script job.

Functional changes to the previous script:
- new job: check-ci-script, verifies that our gitlab-ci.yml is the one
  generated by the sources
- Added distributions:
  - Fedora 33
- The actual work is now down by a set of scripts in .gitlab-ci/,
  specifically:
  - .gitlab-ci/build.sh is the previous do_build job
  - .gitlab-ci/{fedora|debian}-install.sh are the previous {fedora|debian}_install jobs
  symlinks are in place for centos and ubuntu

Why the scripts instead of steps in the CI? Easer to reading and
reproduce. With the containers being static, it's easy to pull one
locally and re-run the CI job to reproduce an issue. Having everything in a
single script makes that trivial.

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/664
2020-11-09 09:28:11 +01:00
Thomas Haller e8f72a2e4b
gitlab-ci: combine tests for checkpatch/black/msgfmt and nm-code-format.sh
There is no need spawn up two containers (and install similar packages, doing so is
resource intensive), to run two different tests. We can run them in the same
container.

At this point Fedora 33 is not yet fully released. But it will happen soon, so the
image is stable enough for these kinds of tests (and will only get more
stable in the following weeks).

Also no longer collect an artifact with the test output. The test output
is already nicely visible in the gitlab-ci UI. No need to collect it
separately.
2020-09-29 09:46:02 +02:00
Antonio Cardace faa8053802
gitlab-ci: add clang-format test on fedora 33 which run clang-format 11
Signed-off-by: Antonio Cardace <acardace@redhat.com>
2020-09-28 15:08:41 +02:00
Thomas Haller a4f99bab1d
gitlab-ci: add test for checking po files 2020-09-04 10:11:41 +02:00
Thomas Haller 12e8557476
gitlab-ci: fix workarounds for Ubuntu 16.04 in tests
The detection for Ubuntu 16.04 was broken. By now /etc/os-release
contains

    VERSION="16.04.7 LTS (Xenial Xerus)"
2020-08-28 14:24:32 +02:00
Thomas Haller e1e1241aae
gitlab-ci: enable fedora:33 build and generate pages on F32 2020-08-18 23:31:50 +02:00
Thomas Haller 9fa59c156b
gitlab-ci: check "examples/python/gi/nm-wg-set" with black 2020-07-02 17:44:29 +02:00
Thomas Haller 8c3ee4e857
gitlab-ci: enable python black check in gitlab-ci 2020-06-19 12:58:52 +02:00
Thomas Haller 70f3ad6785
gitlab-ci: run checkpatch test against fedora:32 target 2020-06-19 12:47:15 +02:00
Thomas Haller 49886cedd9
gitlab-ci: avoid signing release build in gitlab-ci
The environment has no GPG key configured, so trying to sign fails.
2020-06-07 15:26:03 +02:00
Thomas Haller 0a030da6c2
gitlab-ci: add more CentOS images for tests 2020-05-14 12:03:24 +02:00
Thomas Haller 5feba97cd1 gitlab-ci: use old meson version on Ubuntu 16.04 to work with ninja-1.5.1
Meson 0.54.0 requires ninja-1.7 ([1]).

On Ubuntu 16.04, we now would get meson 0.54.0 via pip3, but ninja-1.5.1 via
apt. That doesn't work anymore.

We could install ninja via pip3, but of course, doing that on other
Debian/Ubuntu versions fails due to ... I don't even want to know.

So, instead use an old meson version on Ubuntu 16.04, which is
known to still work with the ninja provided by the packaging system.

We anyway don't want to test the same meson/ninja versions on all our
Ubuntu/Debian images. The point of having different images is to build
with different software versions. If `pip3 install` gives us the same
everywhere, it isn't very useful.

https://mesonbuild.com/Release-notes-for-0-54-0.html#ninja-version-requirement-bumped-to-17
2020-04-02 09:54:26 +02:00
Thomas Haller 571786c211 gitlab-ci: set DEBIAN_FRONTEND=noninteractive for apt-get install
Otherwise, installing a package might prompt for the user to type something,
breaking the CI build.
2020-04-02 08:12:36 +02:00
Antonio Cardace 17082a868e gitlab-ci: use ruby:2.7 for triage pipeline
This fixes the pipeline as 'gem' will be installed by default in the
container image.

Also fix wording and run gitlab-triage in debug mode to get more output.
2020-03-18 17:40:59 +01:00
Antonio Cardace 968e7898e6 gitlab-ci: add scheduled pipeline to triage inactive issues and MRs 2020-03-18 16:25:55 +01:00
Thomas Haller f12b830a94 gitlab-ci: fix deploying documentation after switching to Fedora 31
Fixes: ec8068ec0c ('gitlab-ci: add "t_fedora:32" and by default build on Fedora 31')
2020-02-22 13:57:56 +01:00
Thomas Haller ec8068ec0c gitlab-ci: add "t_fedora:32" and by default build on Fedora 31 2020-02-21 18:24:25 +01:00
Thomas Haller 4ea999ac94 gitlab-ci: fix generating "pages" after switching to Fedora 30 for main build
(cherry picked from commit c15682558c)
2019-12-13 11:48:25 +01:00
Thomas Haller b733d477e8 gitlab-ci: run tests on extra distributions only manually
For the moment, we use docker images from dockerhub, which require
a lot of extra overhead to prepare and install the test environment.
This should be improved, by using more suitable container images.

Anyway, for now to alleviate the pressure on the freedesktop gitlab
infrastructure, disable most test to only run manually.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/241#note_282521
2019-11-22 13:46:22 +01:00
Thomas Haller 339df56887 gitlab-ci: use Fedora 30 to build documentation and archived tarball 2019-11-22 13:46:22 +01:00
Thomas Haller 3019648b4b checkpatch,gitlab-ci: let checkpatch script compare against latest upstream master
When opening a merge request from a fork of NetworkManager, then the
pipeline runs with the a checkout of the fork. That means, checkpatch
would compare the branch against "master" (or "nm-x-y" stable branches)
of the fork, instead of upstream.

That doesn't seem too useful. Instead, also add upstream NetworkManager
as git remote, fetch the branches, and use the branches from there as
base for checkpatch.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/issues/255
2019-10-02 18:46:36 +02:00
Thomas Haller 44193d3def gitlab-ci: workaround unit test failure for iproute2 bug in "ubuntu:devel"
"ubuntu:devel" ships iproute2 version "5.2.0-1ubuntu1". This has a well known
bug that prevents it from creating IP tunnels during the unit tests.

We already workaround that on Debian. Add the same workaround to match the
Ubuntu package.
2019-10-01 09:55:39 +02:00
Thomas Haller b40a3aa727 gitlab-ci: add building on Fedora 31
And don't build Fedora 28 by default. It's aleady end of life.
But for now keep it, so it can be triggered manually.
2019-09-25 15:48:08 +02:00
Thomas Haller 1a2a5b37b4 tests: don't install unnecessary package in gitlab-ci tests
REQUIRED_PACKAGES has two uses:

 - to setup a system for developing NetworkManager. This installs
   convenience packages like "cscope".

 - to install the packages required for unit testing in gitlab-ci.

For gitlab-ci we should only install the packages that we actually
need.
2019-09-25 15:47:39 +02:00
Thomas Haller be76d8b624 gitlab-ci: workaround build failure in Debian:sid due to iproute2 issue
Our platform unit tests try to add an IP tunnel using iproute2.
That fails with

    "add tunnel "ip6tnl0" failed: File exists"

This is a bug in iproute2-5.2.0, see [1].

Workaround the issue by downgrading the package.

[1] https://www.spinics.net/lists/netdev/msg584916.html
2019-07-12 10:45:36 +02:00
Thomas Haller 13b4cad989 gitlab-ci: add manual build step to test on ubuntu:rolling and ubuntu:devel
Rolling is the latest release (regardless of whether LTS), currently
that would be 19.04.

Devel is the next release, currently that would be 19.10.

Add manual build steps to trigger those builds so we can manually verify
that they pass.
2019-07-12 10:25:12 +02:00
Thomas Haller bf1cadbdc7 gitlab-ci: enable test build on Debian 10 (buster) 2019-07-10 12:29:48 +02:00
Thomas Haller 896dc7d4d9 gitlab-ci: also build on CentOS 7.5 and 7.6 2019-05-29 09:42:40 +02:00
Thomas Haller c9873d4273 gitlab-ci: run "checkpatch" test on Fedora 29 image
Fedora 28 is no longer supported at this point. Run the "checkpatch"
test on a Fedora 29 image instead.
2019-05-29 09:42:40 +02:00
Thomas Haller 6d76a0974e gitlab-ci: run unit tests under valgrind in gitlab-ci
On Ubuntu 16.04 (trusty) valgrind fails due to rdrand being advertised
but not implemented.

Work around that by installing valgrind from Ubuntu 18.04 (bionic) via
the "contrib/scripts/nm-ci-install-valgrind-in-ubuntu1604.sh" script.
2019-05-18 09:58:52 +02:00