From 142399f8a39c2f679286fae93ee03be8d7c75e34 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 28 Nov 2019 11:35:54 +1000 Subject: [PATCH] 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 --- .gitlab-ci.yml | 21 ++----------------- .gitlab-ci/meson-build.sh | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 19 deletions(-) create mode 100755 .gitlab-ci/meson-build.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 899d554..faa93ad 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 0000000..1b471aa --- /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 -- 2.7.4