[gnome-shell/wip/fmuellner/more-ci: 7/10] ci: Add build stage



commit e1775027d0826b64cd917e98a89172f2998f992c
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         | 23 +++++++++++++++++++++++
 .gitlab-ci/checkout-mutter.sh | 31 +++++++++++++++++++++++++++++++
 3 files changed, 75 insertions(+), 3 deletions(-)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 51c28a47d..8a03c64ff 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,12 +30,23 @@ js_check:
     script:
         - find js -name '*.js' -exec js60 -c -s '{}' ';' 2>&1 | tee $JS_LOG
         - (! grep -q . $JS_LOG)
-    only:
-        - merge_requests
-        - /^.*$/
+    <<: *only_default
         changes:
             - js/**/*
     artifacts:
         paths:
             - ${JS_LOG}
         when: on_failure
+
+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..55e99f203
--- /dev/null
+++ b/.gitlab-ci/Dockerfile
@@ -0,0 +1,23 @@
+FROM registry.gitlab.gnome.org/gnome/mutter/master:v1
+
+RUN dnf -y update && dnf -y upgrade && \
+    dnf install -y 'dnf-command(copr)' && \
+    dnf builddep -y gnome-shell && \
+
+    # cc isn't *really* needed, bt only exports HAVE_BLUETOOTH to js,
+    # rest are outdated build-requires
+    dnf remove -y control-center gnome-bluetooth-libs-devel \
+                  dbus-glib-devel upower-devel python3-devel && \
+
+    # We'll build mutter ourselves
+    dnf remove -y --noautoremove mutter mutter-devel && \
+
+    # Deps that are only brought in by unused requires
+    dnf install -y python3 'pkgconfig(libsystemd)' && \
+
+    # Needed for tests
+    dnf copr enable -y fmuellner/gnome-shell-ci && \
+    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..69f57a27f
--- /dev/null
+++ b/.gitlab-ci/checkout-mutter.sh
@@ -0,0 +1,31 @@
+#!/usr/bin/bash -x
+
+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_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 mr-origin $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]