Age | Commit message (Collapse) | Author |
|
Freedesktop CI/CD runners are shared machines with a lot of cores and
they accept many parallel jobs coming from multiple projects. There
are no resources guarantees, which leads to the sporadic slowness.
This makes our `ninja test` fail in extreme cases.
We have already tried to bump the timeout limit for the slower tests in
e941638ce652 ("runner/tests: Increase the timeout by 10x") which helped
a bit, but we still fail from time to time.
As an extra mitigation let's make the CI do 2 retries (= total of 3
attempts) before finally failing the whole pipeline.
Cc: Petri Latvala <petri.latvala@intel.com>
Issue: https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/197
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
|
|
Use buildah 2019-08-13.0 for our container building needs as
2019-12-02 seems to break building through podman which results in:
systemd cgroup flag passed, but systemd support for managing cgroups
is not available
Reported-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Tested-by: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
So we don't have unexpected version switches that may change/break
tools.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
So when we start sending emails about those failures including
`| tail -n 20` will actually make sense.
v2: make -j $(nproc) by default (Petri)
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Update to the newest version.
Python 3 is now the default one, so we can drop the suffix from pip
invocation and we have to install it explicitly.
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
We have a requirement that all new tests should be documented using
igt_describe() & family since 2f273018ac42 ("CONTRIBUTING: Rework a bit and update").
Let's start actually enforcing that by having this as a part of the CI.
For consumption by:
https://gitlab.freedesktop.org/gfx-ci/i915-infra/merge_requests/55
Cc: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
We have to use the final location of IGT for --prefix as some of the
binaries use that for asset lookup (e.g. register definitions that end
up in $PREFIX/share/).
To install it under a local directory during the early build steps it's
better to use $DESTDIR.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
We were pulling and tagging images locally ahead of time just in case
the next build may need it (i.e. debian-minimal for the fully featured
debian).
Instead of doing that we can specify the registry in Dockerfile's FROM
cluse, so the image is pulled only when we are need it.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
The current setup uses docker-inside-docker setup which seems to fail
quite often:
WARNING: Service runner-HnMPegeT-project-3185-concurrent-0-docker-0 probably didn't start properly.
Using docker image XYZ for docker:stable ...
ERROR: Job failed (system failure): Error response from daemon: No such container: XYZ (executor_docker.go:743:0s)
Switching over to buildah (invoked via podman - docker's drop-in
replacement) everything will happen locally without the need to engage
any daemons, which should make the build more reliable.
We force using docker format for the containers as only the very latest
docker can understand OCI and it does not have widespread adoption yet.
Buildah can also use chroot for isolation which simplifies network
handling for nested containers and have a potential of being a tad bit
faster.
To query remotes and manage remote tags we can use skopeo, which saves
us from pulling full images from the remote without an actual need.
Fixes: https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/187
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Tag build-* images only with dockerfile-$FILE_SHA1 for changes detection
and commit-$COMMIT_SHA1, so we know which set of images we have to use
for any given commit.
The igt container needs only ref (e.g. master) and commit-$COMMIT_SHA1
tags, as the dockerfile-$FILE_SHA1 one is irrelevant - we build build
every time anyway.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Correct one = the one tagged with current commit, so in case of parallel
pipelines we don't take the wrong "latest".
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Currently, the containers are used only to build IGT. We also want to
have an option to run IGT inside a container. For this, new build stage
is added.
v2: help touch-ups (Arek)
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
|
|
Since different images can be present at the same time, it is better to
always use the one built for this particular git reference.
V3:
- Change $CI_COMMIT_REF_NAME to commit-$CI_COMMIT_SHA
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Base images rarely change, there is not much sense in rebuilding it on
every commit. GitLab already has mechanism for detecting such changes.
However, it is only able to prevent rebuilding whenever there is no
changes within the same ref. Since in our CI system, git tag is created
on every series, the mechanism doesn't work.
One possible way to workaround that is to compute a checksum of a
Dockerfile, and rebuilding only if there was no image built with the
same checksum.
V2:
- Rename gitlab-ci to .gitlab-ci (Arek)
- Add commit-$CI_COMMIT_SHA
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
|
|
Dockerfile.build-* is consistent with build-* naming.
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
|
|
igt-* better suits for containers which contain IGT inside, while
build-* is better for containers which are used to build IGT.
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
|
|
No functional changes. This order is consistent with the order of
execution stages.
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Oleg Vasilev <oleg.vasilev@intel.com>
|
|
Meson emits a warning because we use options beginning with "build_":
DEPRECATION: Option uses prefix "build_", which is reserved for Meson. This will become an error in the future.
Rename our options so that we don't use the Meson-reserved prefix.
Signed-off-by: Simon Ser <simon.ser@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Use the libatomic1:mips package only in the Debian Stretch Docker
image for MIPS and add Gitlab CI step to run tests on MIPS.
Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
Fixes: 439a9f5d615f ("gitlab-ci: add build for MIPS")
Reviewed-by: Simon Ser <simon.ser@intel.com>
|
|
Add Docker image and Gitlab CI steps to run builds for the MIPS
architecture using Debian Stretch with backports.
Signed-off-by: Guillaume Tucker <guillaume.tucker@collabora.com>
Reviewed-by: Simon Ser <simon.ser@intel.com>
|
|
The meson command line has -Dbuild_tests=disabled -Dwith_libdrm=""
because those aren't trivial to make automatic. Plain libdrm is also
required, but the libdrm_vendor ones are all optional so for now those
are just explicitly disabled. Otherwise this tests that the automated
machinery is able to figure out what can be built.
v2 (Simon): Base the debian docker image on the debian-minimal image
v3: Make the empty argument to with_libdrm more explicit and apparent (Arek)
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Simon Ser <simon.ser@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Meson 0.47 comes with a new type of option called 'feature' so instead of:
type : 'combo',
value : 'auto',
choices : ['auto', 'true', 'false'],
We can:
type : 'feature',
The main difference is that the feature takes auto, enabled and disabled
instead of auto, true and false.
get_option() on a feature returns opaque object that can be passed as
a 'required' argument of a dependency. Auto is equivalent to 'required
: false', enabled is equivalent to 'required : true' and disabled
introduces new behavior forcing the dependency to be considered not
found.
This allows us to streamline a lot of logic regarding optional IGT
features.
This patch bumps required meson version to 0.47.0
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Simon Ser <simon.ser@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Only the meson build supports Panfrost.
Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
|
|
Audio tests have been removed and replaced by Chamelium tests.
Signed-off-by: Simon Ser <simon.ser@intel.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
This adds a build and test step with Clang on Fedora. Hopefully this can
help keeping Clang builds healthy.
Signed-off-by: Simon Ser <simon.ser@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
To stop sending those pesky failure emails, that condition people to
ignore anything sent from gitlab-ci.
Now we will have to click the button manually, whenever we want to bump
the docs.
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Bugzilla: https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/46
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
... for completeness.
Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Add CI for armhf environment.
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Eric is using meson nowadays.
v2: Fix up the test filter, meson lists now contain more than in the
automake lists.
Cc: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
python is brittle otherwise and loves to just blow up. Especially
when you have commits with non-ASCII characters, which gitlab CI
injects into the docker env.
Strangely we've only seen this go boom on the ninja test target
in the arm64 cross-compile. For paranoia roll it out everywhere.
v2: gitlab-ci has global variables (Petri)
Cc: Petri Latvala <petri.latvala@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
meson gets grumpy if that changes between invocations.
I'm not entirely clear on why this happens with the interim runner
from gnome folks, but it does. We do still run the exact same image,
with the exact same meson version. But someone the old runner didn't
complain, while the new one does.
Note that the jobs still fail because the interim runner is dead slow
(10x-100x slower to run the library tests) and times out after 30s on
tests that take 1s max.
Acked-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
There's something very funky going on with the occasional commit
consistently failing, e.g.
https://gitlab.freedesktop.org/drm/igt-gpu-tools/-/jobs/51208
We need to catch it to understand what happens.
v2: Also dump the environment (Petri)
Cc: Petri Latvala <petri.latvala@intel.com>
Acked-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
Our gitlab no supports binfmt-misc running of forgein binaries:
https://gitlab.freedesktop.org/freedesktop/freedesktop/issues/91
Only thing missing is that we also need to install qemu-user-static,
since binfmt-misc wants to run that binary from our namespace.
Big kudos to Daniel for setting this up.
Example run on my stuff branch:
https://gitlab.freedesktop.org/danvet/igt-gpu-tools/-/jobs/50307
Cc: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Sean Paul <sean@poorly.run>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
Otherwise it's really hard to get these jobs to run when you need them
too because you changed something with the build instructions.
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
First I tried to build in a full sysroot, but I didn't figure out why
ld never found the libraries (this was on fedora, which might have
been part of the problem - if you just need a toolchain for kernel
corss-building fedora is perfectly fine).
Then I tried using debian's multiarch stuff, which worked a lot
better, except there's some minor gotchas:
- some libraries conflict and can't be multi-arch installed
- some libraries are buggy and cause conflicts when installing
- pkgconfig and ld get confused with some other libraries and pick the
first one they find (i.e. the x86_64 one, not the arm64 one).
That means we need a new docker image with just the cross libaries
installed as -dev packages, and none of the native ones.
Next up I tried to run the tests. Meson has really nice support for an
exe wrapper, and qemu happily runs arm64 on x86_64. With that I
managed to run some tests successfully (it's not even that slow!). But
most are run through a script, and the script doesn't know about the
exe wrapper and hence fails miserably. I discussed this a bit with
Dylan and he filed an upstream meson issue:
https://github.com/mesonbuild/meson/issues/4427#issuecomment-433553689
Another option would be to use binfmt-misc handling (which works
neatly locally), but on the runners we have I can't control that.
Maybe I can beg Daniel Stone ...
For not let's just mark this stage as optional and that failures are
allowed.
v2: Use the new gitlab 1.4 feature to rebuild docker images when
necessary.
Cc: Sean Paul <sean@poorly.run>
Cc: Eric Anholt <eric@anholt.net>
Cc: Dylan Baker <dylan@pnwbakers.com>
Cc: Daniel Stone <daniel@fooishbar.org>
Reviewed-by: Eric Anholt <eric@anholt.net> (v1)
Reviewed-by: Petri Latvala <petri.latvala@intel.com> (v1)
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
I just realized that when you push to a non-HEAD branch, then gitlab
doesn't bother to build the deploy stage. Which means if you push to a
branch, then that's not properly tested.
So build docs right away. We're not going to waste anything, since the
deploy:pages job will pick up right from where we left.
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
We want to make sure this keeps working nicely
Cc: Sean Paul <sean@poorly.run>
Cc: Eric Anholt <eric@anholt.net>
Reviewed-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
|
|
The jobs that build container images and upload them to the registry do
not have to be manual any longer. By leveraging the new only-changes
feature (GitLab 11.4), we can trigger those jobs conditionally on any
alterations to the Dockerfiles.
Cc: Daniel Vetter <daniel@ffwll.ch>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Documentation building differs for meson < 0.47, so let's make sure that
it works.
Also remove a comment that has slipped through.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Let's make sure that we haven't missed any tests with any of the
supported build systems.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
Let's make sure that IGT compiles with autotools.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
The container stage was already using CI_ variables, pushing to the
right registry. Let's do that for the pulling containers too.
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
|
The CI/CD pipeline is configured the following way:
1. Build docker images and add them to repo's registry (manual step for
now, automation needs GitLab to be updated).
2. Build igt with meson on Debian and Fedora.
3. Run `ninja tests` on Fedora.
4. Build and publish docs as an artifact, for GitLab Pages.
v2: Typos and fully-featured meson build.
v3: Use variables instead of hard-coding registry and project.
Cc: Petri Latvala <petri.latvala@intel.com>
Cc: Daniel Vetter <daniel@ffwll.ch>
Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Petri Latvala <petri.latvala@intel.com>
|