From e04d2e81fce00ba2f8d38b059605b36e9d08a7ba Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Sun, 18 Feb 2018 14:59:29 +0000 Subject: [PATCH] ci: Add GitLab CI description file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We're mostly interested into building and testing everything that gets pushed to the repository — including merge requests. When pushing tags, though, we should assume we're spinning a release, so let's run the dist target, and store the tarball, and the generated documentation while we're at it, as artifacts on GitLab. The Dockerfile for the image used for the build is included in tree, and published on Docker Hub. Using a custom image allows us to avoid the costly "download and install build dependencies" phase, as well as controlling the environment a little bit better. https://bugzilla.gnome.org/show_bug.cgi?id=793635 --- .gitlab-ci.yml | 38 ++++++++++++++++++++++++++++++++++++++ .gitlab-ci/Dockerfile | 31 +++++++++++++++++++++++++++++++ .gitlab-ci/run-docker.sh | 9 +++++++++ 3 files changed, 78 insertions(+) create mode 100644 .gitlab-ci.yml create mode 100644 .gitlab-ci/Dockerfile create mode 100755 .gitlab-ci/run-docker.sh diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 000000000..35c667558 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,38 @@ +image: ebassi/gitlab-glib:latest + +stages: + - build + +build-job: + stage: build + script: + - meson --prefix /usr --libdir /usr/lib64 --buildtype debug --werror -Dsystemtap=true -Ddtrace=true _build . + - cd _build + - ninja + - meson test + except: + - tags + artifacts: + when: on_failure + name: "glib-_${CI_COMMIT_REF_NAME}" + paths: + - "${CI_PROJECT_DIR}/_build/meson-logs" + +dist-job: + stage: build + only: + - tags + script: + - meson --prefix /usr --libdir /usr/lib64 --buildtype release -Dgtk_doc=true -Dman=true _build . + - cd _build + - ninja dist + - ninja glib-doc + - tar -c -f "glib-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/glib html + - tar -c -f "gobject-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/gobject html + - tar -c -f "gio-docs-$CI_COMMIT_TAG.tar.xz" -C docs/reference/gio html + artifacts: + paths: + - "${CI_PROJECT_DIR}/_build/glib-docs.tar.xz" + - "${CI_PROJECT_DIR}/_build/gobject-docs.tar.xz" + - "${CI_PROJECT_DIR}/_build/gio-docs.tar.xz" + - "${CI_PROJECT_DIR}/_build/meson-dist/glib-*.tar.xz" diff --git a/.gitlab-ci/Dockerfile b/.gitlab-ci/Dockerfile new file mode 100644 index 000000000..69434ca09 --- /dev/null +++ b/.gitlab-ci/Dockerfile @@ -0,0 +1,31 @@ +FROM fedora:27 + +RUN dnf -y install \ + desktop-file-utils \ + elfutils-libelf-devel \ + gcc \ + gcc-c++ \ + gettext \ + git \ + glibc-devel \ + glibc-headers \ + gtk-doc \ + itstool \ + libattr-devel \ + libffi-devel \ + libmount-devel \ + libselinux-devel \ + libxslt \ + meson \ + pcre-devel \ + systemtap-sdt-devel \ + zlib-devel + +ARG HOST_USER_ID=5555 +ENV HOST_USER_ID ${HOST_USER_ID} +RUN useradd -u $HOST_USER_ID -ms /bin/bash user + +USER user +WORKDIR /home/user + +ENV LANG C.utf8 diff --git a/.gitlab-ci/run-docker.sh b/.gitlab-ci/run-docker.sh new file mode 100755 index 000000000..940456fad --- /dev/null +++ b/.gitlab-ci/run-docker.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -e + +sudo docker build --build-arg HOST_USER_ID="$UID" --tag "gitlab-glib" \ + --file "Dockerfile" . +sudo docker run --rm \ + --volume "$(pwd)/..:/home/user/app" --workdir "/home/user/app" \ + --tty --interactive "gitlab-glib" bash