diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index baf6bf9d..091ad269 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,39 +1,84 @@ stages: - test + - review - deploy +variables: + BUNDLE: "org.gnome.Fractal.${CI_COMMIT_SHA}.flatpak" + flatpak: - image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/rust_bundle:master - stage: test + image: "registry.gitlab.gnome.org/gnome/gnome-runtime-images/rust_bundle:master" + stage: "test" + variables: + MANIFEST_PATH: "flatpak/org.gnome.Fractal.json" + FLATPAK_MODULE: "fractal" + DBUS_ID: "org.gnome.Fractal" + script: - # Build the flatpak deps - - flatpak-builder --stop-at=fractal app flatpak/org.gnome.Fractal.json - + - flatpak-builder --stop-at=${FLATPAK_MODULE} app ${MANIFEST_PATH} # Force regeneration of gresources regardless of artifacts chage - - flatpak-builder --run app flatpak/org.gnome.Fractal.json glib-compile-resources --sourcedir=fractal-gtk/res/ fractal-gtk/res/resources.xml + - flatpak-builder --run app ${MANIFEST_PATH} glib-compile-resources --sourcedir=fractal-gtk/res/ fractal-gtk/res/resources.xml - - flatpak-builder --run app flatpak/org.gnome.Fractal.json meson --prefix=/app --libdir=/app/lib _build - - flatpak-builder --run app flatpak/org.gnome.Fractal.json ninja -C _build install - - flatpak-builder --finish-only app flatpak/org.gnome.Fractal.json - - flatpak build-export repo app + # Build the flatpak repo + - flatpak-builder --run app ${MANIFEST_PATH} meson --prefix=/app _build + - flatpak-builder --run app ${MANIFEST_PATH} ninja -C _build install - # Create a flatpak bundle for designers to use - - flatpak build-bundle repo fractal-dev.flatpak org.gnome.Fractal # Run the tests - - flatpak-builder --run app flatpak/org.gnome.Fractal.json cargo test + - | + xvfb-run -a -s "-screen 0 1024x768x24" \ + flatpak-builder --run \ + --env=CARGO_HOME="target/cargo-home" \ + --env=CARGO_TARGET_DIR="target_test/" \ + app ${MANIFEST_PATH} \ + cargo test + + # Create a flatpak bundle + - flatpak-builder --finish-only app ${MANIFEST_PATH} + - flatpak build-export repo app + - flatpak build-bundle repo ${BUNDLE} ${DBUS_ID} artifacts: paths: - - fractal-dev.flatpak + - $BUNDLE expire_in: 2 days cache: - # JOB_NAME - Each job will have it's own cache - # ^ Keep diffrerent caches for each branch - key: "$CI_JOB_NAME" + key: "flatpak" paths: - .flatpak-builder/cache/ - target/ + - target_test/ + +review: + stage: review + dependencies: + - flatpak + script: + - echo "Generating flatpak deployment" + artifacts: + paths: + - $BUNDLE + expire_in: 30 days + environment: + name: review/$CI_COMMIT_REF_NAME + url: https://gitlab.gnome.org/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/raw/${BUNDLE} + on_stop: stop_review + except: + - master@World/fractal + - tags + +stop_review: + stage: review + script: + - echo "Stopping flatpak deployment" + when: manual + environment: + name: review/$CI_COMMIT_REF_NAME + action: stop + except: + - master@World/fractal + - tags + .pages: image: fedora