[gnome-shell/wip/fmuellner/more-ci: 7/10] ci: Add build stage
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/wip/fmuellner/more-ci: 7/10] ci: Add build stage
- Date: Sat, 16 Feb 2019 16:33:26 +0000 (UTC)
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]