From 2d4989e93742eb447e5c2881a55a2236750ce663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 12 Feb 2019 17:53:42 +0100 Subject: [PATCH] ci: Add build stage So far we are only performing a basic syntax check on javascript sources; it's time to test the C code as well. As mutter is tightly coupled, we bite the bullet and build it as well, either using a matching branch (if it exists), or current master. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/408 --- .gitlab-ci.yml | 24 +++++++++++++++++++++--- .gitlab-ci/Dockerfile | 19 +++++++++++++++++++ .gitlab-ci/checkout-mutter.sh | 31 +++++++++++++++++++++++++++++++ 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 .gitlab-ci/Dockerfile create mode 100755 .gitlab-ci/checkout-mutter.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index a08ee78ce..27fff7235 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,10 +1,17 @@ stages: - review - source_check + - build variables: JS_LOG: "js-report.txt" +.only_default: &only_default + only: + - branches + - tags + - merge_requests + check_commit_log: image: registry.fedoraproject.org/fedora:latest stage: review @@ -23,6 +30,7 @@ js_check: script: - find js -name '*.js' -exec js60 -c -s '{}' ';' 2>&1 | tee $JS_LOG - (! grep -q . $JS_LOG) + <<: *only_default only: changes: - js/**/* @@ -30,6 +38,16 @@ js_check: paths: - ${JS_LOG} when: on_failure - only: - - merge_requests - - /^.*$/ + +build: + image: registry.gitlab.gnome.org/gnome/gnome-shell/master:v1 + stage: build + before_script: + - .gitlab-ci/checkout-mutter.sh + - meson mutter mutter/build --prefix=/usr -Dtests=false + - ninja -C mutter/build install + script: + - meson . build -Dbuiltype=debugoptimized + - ninja -C build + - ninja -C build install + <<: *only_default diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile new file mode 100644 index 000000000..aeb43b1b3 --- /dev/null +++ b/.gitlab-ci/Dockerfile @@ -0,0 +1,19 @@ +FROM registry.gitlab.gnome.org/gnome/mutter/master:v1 + +RUN dnf -y update && dnf -y upgrade && \ + dnf install -y 'dnf-command(copr)' && \ + dnf copr enable -y fmuellner/gnome-shell-ci && \ + dnf builddep -y gnome-shell --setopt=install_weak_deps=False && \ + + # bt only exports HAVE_BLUETOOTH to js, rest are outdated build-requires + dnf remove -y gnome-bluetooth-libs-devel dbus-glib-devel \ + upower-devel python3-devel && \ + + # We'll build mutter ourselves + dnf remove -y --noautoremove mutter mutter-devel && \ + + # Needed for tests + dnf install -y '*/xvfb-run' gdm-lib accountsservice-libs && \ + + dnf clean all && \ + rm -rf /var/cache/dnf diff --git a/.gitlab-ci/checkout-mutter.sh b/.gitlab-ci/checkout-mutter.sh new file mode 100755 index 000000000..1fb7c6f9d --- /dev/null +++ b/.gitlab-ci/checkout-mutter.sh @@ -0,0 +1,31 @@ +#!/usr/bin/bash + +shell_branch=$(git describe --contains --all HEAD) +mutter_target= + +git clone https://gitlab.gnome.org/GNOME/mutter.git + +if [ $? -ne 0 ]; then + echo Checkout failed + exit 1 +fi + +cd mutter + +if [ "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then + merge_request_remote=${CI_MERGE_REQUEST_SOURCE_PROJECT_URL//gnome-shell/mutter} + merge_request_branch=$CI_MERGE_REQUEST_SOURCE_BRANCH_NAME + + echo Looking for $merge_request_branch on remote ... + if git fetch $merge_request_remote $merge_request_branch >/dev/null 2>&1; then + mutter_target=FETCH_HEAD + fi +fi + +if [ -z "$mutter_target" ]; then + mutter_target=$(git branch -r -l $shell_branch) + mutter_target=${mutter_target:-origin/master} + echo Using $mutter_target instead +fi + +git checkout $mutter_target