summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hutterer <peter.hutterer@who-t.net>2019-11-28 11:35:54 +1000
committerBenjamin Tissoires <benjamin.tissoires@gmail.com>2019-11-28 14:35:55 +0100
commit142399f8a39c2f679286fae93ee03be8d7c75e34 (patch)
tree771b6732ac4b6ae09923f5569d4da4af9fc93230
parent3f051ca9d8b30e80c5783b558d4f575f68d522e1 (diff)
downloadlibinput-142399f8a39c2f679286fae93ee03be8d7c75e34.tar.gz
gitlab CI: move the build instructions into a bash file
Extending/debugging scripts in the gitlab CI directly is a pain, the turnaround cycle is terrible. Let's move this into a shellscript that we can just call directly. Bonus side-effect: if we wanted to extend the script: set somewhere, this is now much easier to override. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
-rw-r--r--.gitlab-ci.yml21
-rwxr-xr-x.gitlab-ci/meson-build.sh52
2 files changed, 54 insertions, 19 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 899d5547..faa93ade 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -122,24 +122,6 @@ variables:
reports:
junit: $MESON_BUILDDIR/junit-*.xml
-# The default build instructions
-.default_build:
- script:
- - rm -rf "$MESON_BUILDDIR"
- - meson "$MESON_BUILDDIR" $MESON_ARGS
- - meson configure "$MESON_BUILDDIR"
- - ninja -C "$MESON_BUILDDIR" $NINJA_ARGS
- - if test x"$MESON_TEST_ARGS" != "x"; then
- echo "Running meson test -C \"$MESON_BUILDDIR\" $MESON_TEST_ARGS";
- meson test -C "$MESON_BUILDDIR" $MESON_TEST_ARGS || touch .failed;
- ./.gitlab-ci/meson-junit-report.py
- --project-name=libinput
- --job-id="$CI_JOB_ID"
- --output="$MESON_BUILDDIR/junit-$CI_JOB_NAME-report.xml"
- "$MESON_BUILDDIR/meson-logs/testlog.json";
- test -f .failed && exit 1;
- fi
-
#################################################################
# #
# prep stage #
@@ -466,8 +448,9 @@ freebsd:11.2@container-clean:
extends:
- .policy
- .default_artifacts
- - .default_build
stage: build
+ script:
+ - .gitlab-ci/meson-build.sh
dependencies: []
#
diff --git a/.gitlab-ci/meson-build.sh b/.gitlab-ci/meson-build.sh
new file mode 100755
index 00000000..1b471aae
--- /dev/null
+++ b/.gitlab-ci/meson-build.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+if [[ -z "$MESON_BUILDDIR" ]]; then
+ echo "\$MESON_BUILDDIR undefined."
+ exit 1
+fi
+
+# emulate a few gitlab variables to make it easier to
+# run and debug locally.
+if [[ -z "$CI_JOB_ID" ]] || [[ -z "$CI_JOB_NAME" ]]; then
+ echo "Missing \$CI_JOB_ID or \$CI_JOB_NAME".
+ CI_JOB_ID=$(date +%s)
+ CI_JOB_NAME='libinput-job-local'
+ echo "Simulating gitlab environment: "
+ echo " CI_JOB_ID=$CI_JOB_ID"
+ echo " CI_JOB_NAME=$CI_JOB_NAME"
+fi
+
+
+echo "*************************************************"
+echo "builddir: $MESON_BUILDDIR"
+echo "meson args: $MESON_ARGS"
+echo "ninja args: $NINJA_ARGS"
+echo "meson test args: $MESON_TEST_ARGS"
+echo "*************************************************"
+
+set -e
+
+rm -rf "$MESON_BUILDDIR"
+meson "$MESON_BUILDDIR" $MESON_ARGS
+meson configure "$MESON_BUILDDIR"
+ninja -C "$MESON_BUILDDIR" $NINJA_ARGS
+
+if [[ -z "$MESON_TEST_ARGS" ]]; then
+ exit 0
+fi
+
+# we still want to generate the reports, even if meson test fails
+set +e
+meson test -C "$MESON_BUILDDIR" $MESON_TEST_ARGS
+exit_code=$?
+set -e
+
+# We need the glob for the testlog so that it picks up those suffixed by a
+# suite (e.g. testlog-valgrind.json)
+./.gitlab-ci/meson-junit-report.py \
+ --project-name=libinput \
+ --job-id="$CI_JOB_ID" \
+ --output="$MESON_BUILDDIR/junit-$CI_JOB_NAME-report.xml" \
+ "$MESON_BUILDDIR"/meson-logs/testlog*.json; \
+
+exit $exit_code