[gnome-shell/wip/fmuellner/more-ci: 12/15] ci: Add build stage



commit 2d4989e93742eb447e5c2881a55a2236750ce663
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Feb 12 17:53:42 2019 +0100

    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(-)
---
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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]