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