From 47f12bcd2ba1a67f6d5936c2e05185442b689982 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 6 Aug 2025 14:33:18 +0300 Subject: [PATCH 1/3] flatpak: add nautilus test --- test-the-templates/flatpak.yml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test-the-templates/flatpak.yml b/test-the-templates/flatpak.yml index f3ecedc..c7b90f8 100644 --- a/test-the-templates/flatpak.yml +++ b/test-the-templates/flatpak.yml @@ -74,3 +74,18 @@ flatpak-shell-extension-app: script: - cd gnome-shell - !reference [".flatpak", "script"] + +flatpak-nautilus: + stage: "Flatpak app" + extends: [ ".flatpak" ] + variables: + MANIFEST_PATH: "build-aux/flatpak/org.gnome.Nautilus.json" + FLATPAK_MODULE: "nautilus" + RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" + APP_ID: "org.gnome.Nautilus.Devel" + BUNDLE: "nautilus-dev.flatpak" + before_script: + - git clone --depth=1 https://gitlab.gnome.org/gnome/nautilus.git + script: + - cd nautilus + - !reference [".flatpak", "script"] -- GitLab From adc5e0847763019999e5f36fe20f077ef569aa97 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 6 Aug 2025 16:17:24 +0300 Subject: [PATCH 2/3] flatpak: add gnome-builder test --- test-the-templates/flatpak.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/test-the-templates/flatpak.yml b/test-the-templates/flatpak.yml index c7b90f8..8fba665 100644 --- a/test-the-templates/flatpak.yml +++ b/test-the-templates/flatpak.yml @@ -89,3 +89,19 @@ flatpak-nautilus: script: - cd nautilus - !reference [".flatpak", "script"] + +flatpak-gnome-builder: + stage: "Flatpak app" + extends: [ ".flatpak" ] + variables: + FLATPAK_MODULE: "gnome-builder" + GIT_SUBMODULE_STRATEGY: normal + MANIFEST_PATH: "org.gnome.Builder.Devel.json" + RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" + APP_ID: "org.gnome.Builder.Devel" + BUNDLE: "gnome-builder-git.flatpak" + before_script: + - git clone --depth=1 https://gitlab.gnome.org/gnome/gnome-builder.git + script: + - cd gnome-builder + - !reference [".flatpak", "script"] -- GitLab From 82dbcc98795ce330625367f401db33c4d5f9eabe Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Wed, 6 Aug 2025 14:29:34 +0300 Subject: [PATCH 3/3] oras cache --- flatpak/flatpak_ci_initiative.yml | 49 +++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 3 deletions(-) diff --git a/flatpak/flatpak_ci_initiative.yml b/flatpak/flatpak_ci_initiative.yml index 2ab181a..1950077 100644 --- a/flatpak/flatpak_ci_initiative.yml +++ b/flatpak/flatpak_ci_initiative.yml @@ -20,6 +20,9 @@ include: # Pass "--runtime" in order to build a runtime or extension EXPORT_RUNTIME: "" NIGHTLY_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo" + USE_CACHE: "1" + # Default for backwards compatibility + ARCH: "x86_64" # Till now this was the template job used for everything, # so assume its default tags are x86 to avoid breaking backwards # compatibility. @@ -38,6 +41,33 @@ include: # Print the date, since appstream depends on local timezone - date && date -u + # Make sure we don't end up with any leftover volume cache + # as we are going to extract our own anyway + - rm -rf .flatpak-builder + + # Install oras for now + - VERSION="1.2.3" + - curl -LO "https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz" + - mkdir -p oras-install/ + - tar -zxf oras_${VERSION}_*.tar.gz -C oras-install/ + # - sudo mv oras-install/oras /usr/local/bin/ + # - rm -rf oras_${VERSION}_*.tar.gz oras-install/ + - alias oras=./oras-install/oras + + - app_id_lc=${APP_ID,,} + # FIXME: Only hardcode cache for main atm + # eventually we can also do stable branch caches but that needs more logic + # to determine when and what to pull and push + - branch=main + - registry="ghcr.io/gnome-infra/nightly-cache/${ARCH}/${app_id_lc}:${branch}" + - >- + if [[ "$USE_CACHE" == "1" ]]; then + ./oras-install/oras pull $registry || true + tar --extract --xattrs --zstd --file "builder.tar.zstd" || true + fi + + - ls -ahl .flatpak-builder || true + - export REWRITE_RUN_TESTS="--run-tests" - |- if [[ "${RUN_TESTS}" != "1" ]]; then @@ -50,7 +80,7 @@ include: - >- xvfb-run -a -s "-screen 0 1024x768x24" -- dbus-run-session - flatpak-builder ${CI_FB_ARGS} --keep-build-dirs --user --disable-rofiles-fuse --build-only flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} "${MANIFEST_PATH}" + flatpak-builder ${CI_FB_ARGS} --ccache --keep-build-dirs --user --disable-rofiles-fuse --build-only flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} "${MANIFEST_PATH}" # rewrite-flatpak-manifest will make our checkout dirty and meson will complain # FIXME: we need to copy the manifest rather than modify it in place to avoid making the checkout dirty @@ -65,7 +95,7 @@ include: #! /bin/bash set -ex if [[ "${MESON_DIST}" == "1" ]]; then - flatpak-builder ${CI_FB_ARGS} --keep-build-dirs --user --disable-rofiles-fuse --build-shell="${FLATPAK_MODULE}" --disable-download --disable-updates flatpak_app ${BRANCH:+--default-branch=$BRANCH} "${MANIFEST_PATH}" <<'END' + flatpak-builder ${CI_FB_ARGS} --ccache --keep-build-dirs --user --disable-rofiles-fuse --build-shell="${FLATPAK_MODULE}" --disable-download --disable-updates flatpak_app ${BRANCH:+--default-branch=$BRANCH} "${MANIFEST_PATH}" <<'END' LANG=C.UTF-8 meson dist --no-tests --include-subprojects --allow-dirty END @@ -80,7 +110,7 @@ include: EOF - bash ./dist.sh - - flatpak-builder ${CI_FB_ARGS} --user --disable-rofiles-fuse --finish-only --disable-download --disable-updates flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} "${MANIFEST_PATH}" + - flatpak-builder ${CI_FB_ARGS} --ccache --user --disable-rofiles-fuse --finish-only --disable-download --disable-updates flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} "${MANIFEST_PATH}" # Generate a Flatpak bundle - flatpak build-bundle repo "${BUNDLE}" ${EXPORT_RUNTIME} --runtime-repo="${RUNTIME_REPO:-$NIGHTLY_REPO}" "${APP_ID}" ${BRANCH} @@ -101,6 +131,15 @@ include: mkdir -p .flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/ mv "$dist_path_real" ".flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-dist/" fi + + - >- + if [[ -n "$NIGHTLY_CACHE_GHCR_TOKEN_FILE" ]] && [[ "$USE_CACHE" == "1" ]] && [[ $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH ]]; then + cat ${NIGHTLY_CACHE_GHCR_TOKEN_FILE} | ./oras-install/oras login -u ${NIGHTLY_CACHE_GHCR_USER} --password-stdin ghcr.io + tar --create --xattrs --zstd --file "builder.tar.zstd" --exclude .flatpak-builder/build --exclude .flatpak-builder/rofiles .flatpak-builder/ || true + ./oras-install/oras push $registry "builder.tar.zstd" || true + fi + + - ls -ahl .flatpak-builder || true artifacts: name: 'Flatpak artifacts' when: 'always' @@ -116,11 +155,15 @@ include: .flatpak@x86_64: extends: '.flatpak' + variables: + ARCH: "x86_64" tags: - flatpak .flatpak@aarch64: extends: '.flatpak' + variables: + ARCH: "aarch64" tags: - flatpak-aarch64 -- GitLab