aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
Commit message (Collapse)AuthorAgeFilesLines
* gitlab-ci: Put HTML summary in artifacts for failed piglit jobsMichel Dänzer2019-11-271-0/+5
| | | | | | | This will make it easier to look at details of failed / skipped tests. Acked-by: Daniel Stone <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* gitlab-ci: Stop reporting piglit test results via JUnitMichel Dänzer2019-11-271-3/+0
| | | | | | | | It was basically useless in this form, and processing the JUnit data in the GitLab backend was pretty expensive. Acked-by: Daniel Stone <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* gitlab-ci/deqp: generate junit resultsRob Clark2019-11-221-0/+3
| | | | | Signed-off-by: Rob Clark <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* gitlab-ci: bump arm test containerRob Clark2019-11-221-2/+2
| | | | | | | To pick up updated cts_runner and netcat for the flake reporting. Signed-off-by: Rob Clark <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* gitlab-ci/deqp: detect and report flakesRob Clark2019-11-221-1/+2
| | | | | | | | | | | | | If there are a small number of fails, re-run to determine if they are flakes, and optionally (if `$FLAKES_CHANNEL` configured) report the flakes. This way flakes don't interfere with developers working on other drivers, but get logged so that the developers working on the flaking driver can monitor the situation. Signed-off-by: Rob Clark <[email protected]> Acked-by: Eric Engestrom <[email protected]>
* gitlab-ci: reduce the number of scons buildSamuel Pitoiset2019-11-221-4/+0
| | | | | | | | | | It seems overkill to me to build scons 7x for every pipeline. Scons is now build with the oldest llvm version in scons-old-llvm and with the newest llvm version in scons. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]> Reviewed-by: Eric Anholt <[email protected]>
* ci: Move freedreno's parallelism to the runner instead of gitlab-ci jobs.Eric Anholt2019-11-211-3/+1
| | | | | | | | | | | | | | | | | | | | I set the runners to concurrency=1, so they serve only one gitlab-ci job at at time. Swap over to using the parallel runner now to keep the runners busy, more efficiently than spawning many docker containers and downloading artifacts multiple times, and producing easier-to-understand results for browsing on the web. This bumps the a306 runners to 4x parallel instead of 2x like before, but cheza gles3 drops from 6 to 4. Current rough timings of the jobs (if no container download): db410c-gles2: 5:00 a630-gles2: 1:30 a630-gles3: 6:00 a630-gles31: 5:30 a630-gles3 is a bit longer than I like, but it should come back down once I can sort out the NIR algebraic rewinding.
* gitlab-ci: Directly use host-mapped directory for ccacheMichel Dänzer2019-11-211-9/+3
| | | | | | | | | | | | | | | | | | | | | | | Use hardcoded /cache/mesa/ccache for the cache, so it will be shared by all jobs of all Mesa projects running on the same runner host. This should increase the hit rate and decrease the worst case storage used. Further benefits of directly using a host-mapped directory: * Saves up to ~1 minute per job for restoring and saving the cache contents via the GitLab CI cache mechanism * Cache contents generated by failed jobs are no longer lost * Jobs running in parallel on the same runner host can get hits from each other Also enable compression, so the default maximum cache size of 5G might be sufficient. v2: * Move CCACHE_DIR variable to the .build-linux template Suggested-by: Eric Anholt <[email protected]> Reviewed-by: Eric Anholt <[email protected]> # v1
* gitlab-ci: remove now useless meson-swr-glvnd build jobSamuel Pitoiset2019-11-211-24/+0
| | | | | | | All things are already part of meson-main. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: build GLVND in meson-clangSamuel Pitoiset2019-11-211-1/+2
| | | | | | | | Building GLVND in meson-main doesn't work because this disables libEGL and it's needed for running shader-db. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: build swr in meson-mainSamuel Pitoiset2019-11-211-2/+2
| | | | | | | | Now that debugoptimized isn't set and that all test jobs depend on meson-testing, enabling swr shouldn't slowdown the CI. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: do not build with debugoptimized for meson-mainSamuel Pitoiset2019-11-211-1/+0
| | | | | | | This should reduce compile time because optimizations are costly. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: add a job that only build things needed for testingSamuel Pitoiset2019-11-211-4/+21
| | | | | | | | | For turnip and RADV testing, we will need a debugoptimized build without UBSAN. This introduces meson-testing which builds only the things that are needed by the test stage. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: fix ldd check for Vulkan driversSamuel Pitoiset2019-11-211-1/+1
| | | | | | | The 'dri' directory isn't created when building Vulkan drivers. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: bump piglit checkout commitTimothy Arceri2019-11-201-1/+1
|
* gitlab-ci: Organize images using new REPO_SUFFIX templates featureMichel Dänzer2019-11-151-49/+61
| | | | | | | | | | | | | | | Two benefits: Most docker image related environment variables can now be defined in the jobs where they're used instead of globally. The DEBIAN_TAG values are propagated to other jobs via YAML anchors. Images on https://gitlab.freedesktop.org/mesa/mesa/container_registry are now organized in separate repositories with a suffix matching the name of the job which makes sure the image is there. Acked-by: Eric Anholt <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: Rename container install scripts to match job names (better)Michel Dänzer2019-11-151-6/+1
| | | | | | | | | | | | Cleans up .gitlab-ci/ a little, and allows using a single DEBIAN_EXEC line for all container jobs. v2: * Use lava_arm.sh instead of arm_lava.sh for consistency with v2 of the previous change Reviewed-by: Eric Anholt <[email protected]> # v1 Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: Use functional container job namesMichel Dänzer2019-11-151-18/+18
| | | | | | | | | | | This makes it easier to tell which job is which in a pipeline. v2: * Use lava_arm{64,hf} instead of arm{64,hf}_lava to keep these jobs together in pipeline overviews Reviewed-by: Eric Anholt <[email protected]> # v1 Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: Document that ci-templates refs must be in syncMichel Dänzer2019-11-151-0/+1
| | | | | | | | | | | Otherwise there can be weird breakage. (Removing the include from .gitlab-ci/lava-gitlab-ci.yml doesn't seem possible unfortunately: https://gitlab.freedesktop.org/daenzer/mesa/pipelines/79458) Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: update Piglit commit, update skipsTapani Pälli2019-11-151-1/+1
| | | | | Signed-off-by: Tapani Pälli <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: auto-cancel CI runs when a newer commit is pushed to the same branchEric Engestrom2019-11-141-0/+2
| | | | | | | Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Eric Anholt <[email protected]> Acked-by: Alyssa Rosenzweig <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: build RADV on ARM64Samuel Pitoiset2019-11-131-0/+1
| | | | | | | The ARMHF LLVM package is LLVM 7 but RADV requires LLVM 8. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: build a specific libdrm version for ARM64Samuel Pitoiset2019-11-131-1/+1
| | | | | | | RADV requires libdrm-2.4.100 but the distrib package is too old. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* ci: Enable all of GLES3/3.1 testing for softpipe.Eric Anholt2019-11-121-11/+9
| | | | | | | | Now that we're not using so many job slots, it's easy to get these jobs run in a reasonable amount of time (gles3 took 10 minutes for 4 cores, and gles31 was 15 minutes for 4 cores). Acked-by: Michel Dänzer <[email protected]>
* ci: Use cts_runner for our dEQP runs.Eric Anholt2019-11-121-8/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This runner is a little project by Bas, written in C++, that spawns threads that then loop grabbing chunks of the (randomly shuffled but consistently so) test list and hand it to a dEQP instance. As the remaining list gets shorter, so do the chunks, so hopefully the threads all complete effectively at once. It also handles restarting after crashes automatically. I've extended the runner a bit to do what I was doing in the bash scripts before, like the skip list and expected failures handling. This project should also be a good baseline for extending to handle retesting of intermittent failures. By switching to it, we can have the swrast tests just take up one job slot on the shared runners and keep their allotment of CPUs busy, instead of taking up job slots with single-threaded dEQP jobs. It will also let us (eventually, once I reprovision) switch the freedreno runners over to threading within the job instead of running concurrent jobs, so that memory scribbles in one pipeline don't affect unrelated pipelines, and I can experiment with their parallelism (particularly on a306 where we are frequently backed up) without trashing other people's jobs. What we lose in this process is per-test output in the log (not a big loss, I think, since we summarize fails at the end and reducing log length keeps chrome from choking on our logs so badly). We also drop the renderer sanity checking, since it's not saving qpa files for us to go poke through. Given that all the drivers involved have fail lists, if we got the wrong renderer somehow, we'd get a job failure anyway. v2: Rebase on droppong of the autoscale cluster and the arm64 build/test split. Use a script to deduplicate the cts-runner build. v3: Rebase on the amd64 build/test container split. Acked-by: Daniel Stone <[email protected]> (v1) Reviewed-by: Tomeu Vizoso <[email protected]> (v2)
* ci: Use several debian buster packages instead of hand-building.Eric Anholt2019-11-121-1/+1
| | | | | | | | | | | | This helps cut down our container build time. I've left a few that we're likely to rev more frequently or I was less confident in dropping. v2: Rebase on the build/test container split, now bumps the build container tag in this commit. Acked-by: Eric Engestrom <[email protected]> (v1) Acked-by: Daniel Stone <[email protected]> (v1)
* gitlab-ci: build libdrm using meson instead of autotoolsEric Engestrom2019-11-121-1/+1
| | | | | | | | | Autotools was deprecated for a while and has now been removed, so let's start using meson here so that we won't have any issues next time we update libdrm. Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: Use separate docker images for x86 build/test jobsMichel Dänzer2019-11-121-3/+11
| | | | | | | | | Same as was done for the ARM images before. This should make it less painful to update to newer dEQP / piglit as well as to make changes to the build/test environment. Reviewed-by: Eric Anholt <[email protected]>
* gitlab-ci: Run piglit tests with llvmpipeMichel Dänzer2019-11-121-10/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One job for the quick_gl profile, one for the glslparser & quick_shader profiles (doing these together takes hardly any more time than quick_shader alone). v2: * Don't break lava tests v3: * Remove piglit test artifacts paths: * Exclude some quick_shader tests again: - Test whose result flips between pass/fail/skip - *@vs_in tests, as not the same one of these gets picked every time v4: * Do not list passing tests in .gitlab-ci/piglit/*.txt (Eric Anholt) * Include the test number summary in .gitlab-ci/piglit/*.txt * Completely disable generating any vs_in tests in the piglit build. * Remove some more unneded files from the piglit build tree. * Exclude quick_gl arb_gpu_shader5 tests; they were all skipped anyway, as llvmpipe doesn't support this extension yet, but occasionally they would spuriously fail instead. v5: * Set LD_LIBRARY_PATH, so we actually test the Mesa build from the pipeline... * Verify that wflinfo reports the expected Mesa version * Pass -noreset to Xvfb v6: * Don't use autoscale runners, run piglit with -j4 (Eric Anholt) Reviewed-by: Eric Anholt <[email protected]>
* gitlab-ci: Share dEQP build process between x86 & ARM test image scriptsMichel Dänzer2019-11-121-2/+2
| | | | | | | | | | See https://gitlab.freedesktop.org/mesa/mesa/issues/2056 v2: * Rename .gitlab-ci/deqp-build.sh => .gitlab-ci/build-deqp.sh (Eric Anholt) Reviewed-by: Eric Anholt <[email protected]>
* gitlab-ci: Move artifact preparation to separate scriptMichel Dänzer2019-11-121-7/+7
| | | | | | | | | | | | | | | | | It's currently only needed for the meson-main and meson-arm64 jobs, not the other meson build jobs. Also remove MESON_SHADERDB, just run .gitlab-ci/run-shader-db.sh directly from the meson-main job. v2: * Also run prepare-artifacts.sh in meson-arm64 script v3: * Move tarball creation into the new script as well, as it prevented ccache --show-stats from running in after_script Reviewed-by: Eric Engestrom <[email protected]> # v1 Reviewed-by: Eric Anholt <[email protected]>
* Revert "ci: Switch over to an autoscaling GKE cluster for builds."Eric Anholt2019-11-061-18/+5
| | | | | | | | | | | | | | | | | | | | This reverts commit c9df92bf795af878c38538c85f781291c78ec513. It turns out that gitlab-runner uses kubernetes all wrong, spawning Pods and sshing into them to run the script instead of Jobs containing the script to run. This means that when anything goes wrong with the pod (autoscale, preemption, VM maintenance, cluster reconfiguration), the job fails and only sometimes gets handled as a runner system failure. Even worse, due to bugs in either the runner or k8s itself, some classes of timeout-related failure end up not being reported as failures, and the job will incorrectly report success! Disable using the "autoscale" cluster until we can do something else (docker-machine instead of k8s, or the custom third-party k8s-native runner). Reviewed-by: Michel Dänzer <[email protected]> Acked-by: Daniel Stone <[email protected]>
* gitlab-ci: Use separate arm64 build/test docker imagesMichel Dänzer2019-11-061-3/+14
| | | | | | | | | | | | | | | | The image used for test jobs is only about 1/6 as big as before, which may help avoid some issues with some of the test boards. Inspired by https://gitlab.freedesktop.org/mesa/mesa/issues/2046 . v2: * Leave LIBDRM_VERSION at 2.4.99 (Daniel Stone) * Delete more build artifacts from dEQP tree (Daniel Stone) v3: * Set LD_LIBRARY_PATH for ldd Acked-by: Daniel Stone <[email protected]> # v2 Reviewed-by: Eric Anholt <[email protected]> # Except for the ldd line
* gitlab-ci: Set arm job CCACHE_DIR properlyMichel Dänzer2019-11-051-1/+2
| | | | | | | | | | | | | | | | $PWD doesn't work for variables:, it ended up as "/ccache", always starting with an empty cache. v2: * Use relative path and realpath v3: * Use $CI_PROJECT_DIR (Eric Anholt) * Clear ccache stats in before_script if the cache is in $CI_PROJECT_DIR Fixes: c9df92bf795a "ci: Switch over to an autoscaling GKE cluster for builds." Reviewed-by: Eric Anholt <[email protected]> Reviewed-by: Eric Engestrom <[email protected]>
* ci: Switch over to an autoscaling GKE cluster for builds.Eric Anholt2019-10-311-5/+17
| | | | | | | | | | | | | | | | | | | | | | | | The GKE pool we're using is 1-3 32-core VMs, preemptible (to keep costs down), with 8 jobs concurrent per system. We have plenty of memory (4G/core), so we run make -j8 to try to keep the cores busy even when one job is in a single-threaded step (docker image download, git clone, artifacts processing, etc.) When all jobs are generating work for all the cores, they'll be scheduled fairly. The nodes in the pool have 300GB boot disks (over-provisioned in space to provide enough iops and throughput) mounted to /ccache, and CACHE_DIR set pointing to them. This means that once a new autoscaled-up node has run some jobs, it should have a hot ccache from then on (instead of having to rely on the docker container cache having our ccache laying around and not getting wiped out by some other fd.o job). Local SSDs would provide higher performance, but unfortunately are not supported with the cluster autoscaler. For now, the softpipe/llvmpipe test runs are still on the shared runners, until I can get them ported onto Bas's runner so they can be parallelized in a single job. Reviewed-by: Michel Dänzer <[email protected]>
* gitlab-ci: build a recent enough version of GLVND (ie. 1.2.0)Eric Engestrom2019-10-311-1/+1
| | | | | Signed-off-by: Eric Engestrom <[email protected]> Reviewed-by: Dylan Baker <[email protected]>
* gitlab-ci: Disable meson-windows job for the time beingMichel Dänzer2019-10-301-1/+1
| | | | | It needs a CI runner carrying the mesa-windows tag, but there's none available currently.
* gitlab-ci: Only run the pipeline if any files affecting it have changedMichel Dänzer2019-10-291-3/+21
| | | | | | | | | | | | | | | | E.g. documentation-only changes cannot affect the outcome of the pipeline, so don't waste resources on running it. The thing we need to be careful about here is that the container stage jobs must always run if any later stage jobs using the corresponding docker images run. We're currently using the same .ci-run-policy template for all jobs, so this is trivially true. v2: * Add bin/ and common.py (Eric Engestrom) Acked-by: Alyssa Rosenzweig <[email protected]> # v1 Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: Update required libdrm versionAlexandros Frantzis2019-10-291-1/+1
| | | | | | | | | | | | | | Commit 9edcce2a32ed bumped the required libdrm-amdgpu version to 2.4.100. Update the version we use in our CI scripts to avoid CI build failures. Also bump the debian image name for this change to take effect. Note that amdgpu is only built with the debian-buster image, so only this image requires an update. Fixes: 9edcce2a ("ac: get tcc_harvested from the kernel") Signed-off-by: Alexandros Frantzis <[email protected]> Reviewed-by: Erik Faye-Lund <[email protected]>
* gitlab-ci: fixup debian tagsErik Faye-Lund2019-10-281-1/+1
| | | | | | | When resolving a merge-conflict, I accidentally only updated the ARM64-tag tag. Let's correct this. Fixes: 3d529c17393 ("gitlab-ci: also build Zink on CI")
* gitlab-ci: also build Zink on CIErik Faye-Lund2019-10-281-2/+2
| | | | | | | This prevents accidentally breaking the driver-build while working on other drivers. Signed-off-by: Erik Faye-Lund <[email protected]>
* gitlab-ci: Add a job for meson on windowsDylan Baker2019-10-251-1/+19
| | | | | | | | | | | | | | | | This adds a new CI job that runs on windows with MSVC. It currently builds softpipe and osmesa, and runs the related unit tests. It does rely on meson's wraps for zlib, but I've set up caching of the wrap dependencies so hopefully that wont be a problem. I really wanted to user powershell for this, but there just isn't an easy way to do that, it's much easier to use batch scripts, so thats what I used. The leading `/` for .gitlab-ci/lava... must be removed because windows doesn't understand it, and when it reads the file the job ends in error. Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: refactor out some common stuff for Windows and LinuxDylan Baker2019-10-251-7/+12
| | | | Reviewed-by: Eric Engestrom <[email protected]>
* scons: Print a deprecation warning about using scons on not windowsDylan Baker2019-10-241-2/+2
| | | | | | | | At this point meson should be able to handle all of the non-windows platforms just fine; we'd like to be able to stop maintaining scons for those platforms sooner than later. Reviewed-by: Eric Anholt <[email protected]>
* gitlab-ci: Enable UBSan for the meson-vulkan jobMichel Dänzer2019-10-241-0/+4
| | | | | | | It doesn't report any errors now. Reviewed-by: Eric Engestrom <[email protected]> Reviewed-by: Adam Jackson <[email protected]>
* gitlab-ci: Enable llvmpipe in ARM build jobsMichel Dänzer2019-10-221-2/+2
| | | | | | | | | v2: * Use LLVM 8 from buster-backports v3: * Use LLVM 7 again for armhf, llvmpipe is still broken there with LLVM 8 Acked-by: Eric Engestrom <[email protected]>
* gitlab-ci: Use native aarch64 runner for ARM build jobsMichel Dänzer2019-10-221-27/+32
| | | | | | | | | | | | | | This allows running the regression tests. One downside is that we can't easily build the Vulkan overlay layer, because only x86 binaries of the glslang validator are available. If that's important, we could either use those binaries via qemu, or build it from source. v2: * Add :amd64 suffix to existing debian-9/10 job names (Eric Engestrom) Acked-by: Eric Engestrom <[email protected]> # v1
* gitlab-ci: Explicitly list debian-10 in needs: for .deqp-test templateMichel Dänzer2019-10-221-1/+3
| | | | | | | Apparently needs: in a definition overwrites inherited ones. So .deqp-test effectively didn't declare needs: for debian-10, which means any jobs based on .deqp-test could spuriously run after the debian-10 job failed or was cancelled.
* Revert "gitlab-ci: Disable meson-mingw32-x86_64 job again for now"Dylan Baker2019-10-161-1/+1
| | | | | | This reverts commit d60b8679a46212d992dcd94b9d3eeebfcff3f00a. Reviewed-by: Eric Engestrom <[email protected]>
* gitlab-ci: Add a pkg-config for mingwDylan Baker2019-10-161-1/+1
| | | | | | | | The one debian provides is broken in buster+, so I've just written my own. This allows meson to find the installed zlib and prevents it from falling back to wraps. Reviewed-by: Eric Engestrom <[email protected]>