ci: Add two flatpak jobs
authorEmmanuele Bassi <ebassi@gnome.org>
Tue, 20 Mar 2018 16:08:45 +0000 (16:08 +0000)
committerEmmanuele Bassi <ebassi@gnome.org>
Tue, 20 Mar 2018 23:14:32 +0000 (23:14 +0000)
When building GTK through the CI infrastructure, it would help to have
some ways of testing it; for instance, if we want to verify that theme
changes are useful, or if we want to run the result without necessarily
build it locally.

This is where flatpak comes in handy. By having the CI build a flatpak
buundle, and storing it as an artifact, of the GTK demos, we can easily
point developers and designers to an installable binary that won't break
their system, nor will require development tools and environments to
run.

.gitlab-ci.yml

index 33d2276de00a561fa378f468d925a840f9b43626..682fc9a47ce01f1fa6d956767864adab03105e11 100644 (file)
@@ -1,27 +1,53 @@
-image: ebassi/gitlab-gtk:latest
-
 stages:
   - build
+  - flatpak
 
-before_script:
-  - mkdir -p _ccache
-  - export CCACHE_BASEDIR=${PWD}
-  - export CCACHE_DIR=${PWD}/_ccache
-
-cache:
-  paths:
-    - subprojects/gdk-pixbuf/
-    - subprojects/glib/
-    - subprojects/graphene/
-    - subprojects/libepoxy/
-    - subprojects/pango/
-
-build:
+gtk:
+  image: ebassi/gitlab-gtk:latest
   stage: build
+  before_script:
+    - mkdir -p _ccache
+    - export CCACHE_BASEDIR=${PWD}
+    - export CCACHE_DIR=${PWD}/_ccache
   script:
     - bash -x ./.gitlab-ci/test-docker.sh
+  cache:
+    paths:
+      - subprojects/gdk-pixbuf/
+      - subprojects/glib/
+      - subprojects/graphene/
+      - subprojects/libepoxy/
+      - subprojects/pango/
   artifacts:
     when: on_failure
     name: "gtk-${CI_COMMIT_REF_NAME}"
     paths:
       - "${CI_PROJECT_DIR}/_build/meson-logs"
+
+flatpak:demo:
+  image: registry.gitlab.com/alatiera/gnome-nightly-oci/gnome-master:latest
+  stage: flatpak
+  script:
+    - flatpak-builder --stop-at=gtk app build-aux/flatpak/org.gtk.Demo.json
+    - flatpak-builder --run app build-aux/flatpak/org.gtk.Demo.json meson --prefix /app --libdir /app/lib --buildtype debug -Dx11-backend=true -Dwayland-backend=true -Dprint-backends=file -Dbuild-tests=false -Ddemos=true _build .
+    - flatpak-builder --run app build-aux/flatpak/org.gtk.Demo.json ninja -C _build install
+    - flatpak-builder --finish-only --repo=repo app build-aux/flatpak/org.gtk.Demo.json
+    - flatpak build-bundle repo gtk-demo-dev.flatpak --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo org.gtk.Demo
+  artifacts:
+    paths:
+      - gtk-demo-dev.flatpak
+    expire_in: 1 day
+
+flatpak:widget-factory:
+  image: registry.gitlab.com/alatiera/gnome-nightly-oci/gnome-master:latest
+  stage: flatpak
+  script:
+    - flatpak-builder --stop-at=gtk app build-aux/flatpak/org.gtk.WidgetFactory.json
+    - flatpak-builder --run app build-aux/flatpak/org.gtk.WidgetFactory.json meson --prefix /app --libdir /app/lib --buildtype debug -Dx11-backend=true -Dwayland-backend=true -Dprint-backends=file -Dbuild-tests=false -Ddemos=true _build .
+    - flatpak-builder --run app build-aux/flatpak/org.gtk.WidgetFactory.json ninja -C _build install
+    - flatpak-builder --finish-only --repo=repo app build-aux/flatpak/org.gtk.WidgetFactory.json
+    - flatpak build-bundle repo gtk-widget-factory-dev.flatpak --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo org.gtk.WidgetFactory
+  artifacts:
+    paths:
+      - gtk-widget-factory-dev.flatpak
+    expire_in: 1 day