<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>CI/CD on KDE Blogs</title><link>https://blogs.kde.org/categories/ci/cd/</link><description>Recent content in CI/CD on KDE Blogs</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 31 Mar 2026 18:04:10 +0300</lastBuildDate><atom:link href="https://blogs.kde.org/categories/ci/cd/index.xml" rel="self" type="application/rss+xml"/><item><title>New Craft cache 25.01 published</title><link>https://blogs.kde.org/2025/02/02/new-craft-cache-25.01-published/</link><pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate><author>Julius Künzel, and Hannah von Reth</author><guid>https://blogs.kde.org/2025/02/02/new-craft-cache-25.01-published/</guid><description>&lt;p&gt;A new Craft cache has just been published. The update is already available for KDE's CD, CI (Windows/Android) will follow in the next days.&lt;/p&gt;
&lt;p&gt;Please note that this only applies to the Qt6 cache. The Qt5 cache is in LTS mode since April 2024 and does not recieve major updates anymore. We highly recommend to port your Qt5 app packaged by Craft to Qt6 as soon as possible!&lt;/p&gt;
&lt;h2 id="changes-highlights"&gt;Changes (highlights)&lt;/h2&gt;
&lt;h3 id="general"&gt;General&lt;/h3&gt;
&lt;p&gt;We added CI for flake8, isort and black with the help of tox (which makes it easy to run them locally too) to all Craft repositories. To be able to do so we did a lot of best pratice cleanup beforehand like eg. removing star imports.&lt;/p&gt;
&lt;h3 id="craft-core"&gt;Craft Core&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Drop support for MSVC 2017&lt;/li&gt;
&lt;li&gt;Introduced a &lt;code&gt;CraftBool&lt;/code&gt; helper. This allows handy things like &lt;code&gt;self.subinfo.options.dynamic.withMyLib.asOnOff&lt;/code&gt; instead of &lt;code&gt;'ON' if self.subinfo.options.dynamic.withMyLib else 'OFF'&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Fix: let the Meson build system respect the &lt;code&gt;buildStatic&lt;/code&gt; option&lt;/li&gt;
&lt;li&gt;Handle &lt;code&gt;--enable-static --enable-shared&lt;/code&gt; in AutoToolsPackageBase instead of in every single blueprint&lt;/li&gt;
&lt;li&gt;Python packages (Linux and Windows MSVC; macOS is work in progress):
&lt;ul&gt;
&lt;li&gt;Build them ourself instead of using the pre-build binaries from pypi.org&lt;/li&gt;
&lt;li&gt;Use proper staging&lt;/li&gt;
&lt;li&gt;Allow to deploy/package them&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Properly set Craft env when branch is switched (eg. with Craft Master in CI)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="blueprints"&gt;Blueprints&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;libjpeg-turbo 3.0.3&lt;/li&gt;
&lt;li&gt;Multiple fixes for build of shared vs. static libs&lt;/li&gt;
&lt;li&gt;libvpx 1.15.0&lt;/li&gt;
&lt;li&gt;Add minGW 14.2 (not the default yet!)&lt;/li&gt;
&lt;li&gt;7z 24.09&lt;/li&gt;
&lt;li&gt;KShimgen 0.6.1&lt;/li&gt;
&lt;li&gt;linuxdeploy-plugin-qt 2.0.0-alpha-1-20250119&lt;/li&gt;
&lt;li&gt;qtkeychain 0.15.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="about-kde-craft"&gt;About KDE Craft&lt;/h2&gt;
&lt;p&gt;KDE Craft is an open source meta-build system and package manager. It manages dependencies and builds libraries and applications from source on Windows, macOS, Linux, FreeBSD and Android.&lt;/p&gt;
&lt;p&gt;Learn more on &lt;a href="https://community.kde.org/Craft"&gt;https://community.kde.org/Craft&lt;/a&gt; or join the Matrix room &lt;a href="https://go.kde.org/matrix/#/%23kde-craft:kde.org"&gt;#kde-craft:kde.org&lt;/a&gt;&lt;/p&gt;</description></item><item><title>New Craft cache 24.10 published</title><link>https://blogs.kde.org/2024/10/16/new-craft-cache-24.10-published/</link><pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><author>Julius Künzel, and Hannah von Reth</author><guid>https://blogs.kde.org/2024/10/16/new-craft-cache-24.10-published/</guid><description>&lt;p&gt;A new Craft cache has just been published. The update is already available for KDE's CD, CI (Windows/Android) will follow in the next days.&lt;/p&gt;
&lt;p&gt;Please note that this only applies to the Qt6 cache. The Qt5 cache is in LTS mode since April 2024 and does not recieve major updates anymore.&lt;/p&gt;
&lt;h2 id="changes-highlights"&gt;Changes (highlights)&lt;/h2&gt;
&lt;h3 id="craft-core"&gt;Craft Core&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Drop Python2 support&lt;/li&gt;
&lt;li&gt;Require at least Python 3.9&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="blueprints"&gt;Blueprints&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Qt 6.8.0&lt;/li&gt;
&lt;li&gt;FFmpeg 7.1&lt;/li&gt;
&lt;li&gt;Kirigami Addons 1.5.0&lt;/li&gt;
&lt;li&gt;KDE Frameworks 6.7.0&lt;/li&gt;
&lt;li&gt;KDE Plasma 6.2.0&lt;/li&gt;
&lt;li&gt;Removed snoregrowl&lt;/li&gt;
&lt;li&gt;Removed ctemplate&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="about-kde-craft"&gt;About KDE Craft&lt;/h2&gt;
&lt;p&gt;KDE Craft is an open source meta-build system and package manager. It manages dependencies and builds libraries and applications from source on Windows, macOS, Linux, FreeBSD and Android.&lt;/p&gt;
&lt;p&gt;Learn more on &lt;a href="https://community.kde.org/Craft"&gt;https://community.kde.org/Craft&lt;/a&gt; or join the Matrix room &lt;a href="https://go.kde.org/matrix/#/%23kde-craft:kde.org"&gt;#kde-craft:kde.org&lt;/a&gt;&lt;/p&gt;</description></item><item><title>KDE Goals - Our Cumulative Culture</title><link>https://blogs.kde.org/2024/08/26/kde-goals-our-cumulative-culture/</link><pubDate>Mon, 26 Aug 2024 00:00:00 +0000</pubDate><author>Farid Abdelnour</author><guid>https://blogs.kde.org/2024/08/26/kde-goals-our-cumulative-culture/</guid><description>&lt;p&gt;Every two years, the KDE community selects three goals that serve as focal points for the entire community's efforts in the coming years. This cyclical process of goal-setting and community-wide focus is a great example of KDE's &lt;a href="https://openevo.eva.mpg.de/teachingbase/cumulative-culture/"&gt;&lt;em&gt;Cumulative Culture&lt;/em&gt;&lt;/a&gt; in action.&lt;/p&gt;
&lt;p&gt;This concept, typically observed in human societies, refers to the ability to build upon previous knowledge and innovations to create increasingly complex and effective solutions. In KDE's case, each cycle of goals represents a new layer of accumulated wisdom, i.e. new features and more stability.&lt;/p&gt;
&lt;h2 id="the-first-cycle-2018-2020"&gt;The First Cycle (2018-2020)&lt;/h2&gt;
&lt;p&gt;The first cycle of goals laid the groundwork with its focus on community growth, privacy, and usability.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T7116"&gt;Streamlined Onboarding&lt;/a&gt;: Focused on attracting and retaining new contributors by making the onboarding process smoother and more engaging.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T7050"&gt;Privacy Software&lt;/a&gt;: Prioritized user privacy and security, ensuring KDE software respects user data and complies with security standards.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T6831"&gt;Usability &amp;amp; Productivity&lt;/a&gt;: Aimed to enhance the usability and productivity of KDE software, making it powerful yet easy to use.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-second-cycle-2020-2022"&gt;The Second Cycle (2020-2022)&lt;/h2&gt;
&lt;p&gt;The second cycle tackled more complex challenges. Goals like Wayland implementation improvements (which layed the foundation for the Plasma 6 release), improving the app ecosystem, and ensuring consistency in design and functionality.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T11081"&gt;Wayland&lt;/a&gt;: This task aimed at stabilizing Wayland support accross KDE apps.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T11117"&gt;All About the Apps&lt;/a&gt;: Improved KDE's app infrastructure, enabling more efficient app delivery and better support services.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T11093"&gt;Improve Consistency across the Board&lt;/a&gt;: Ensured uniformity in design and functionality across KDE software, improving usability and reducing redundancy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="the-third-cycle-2022-2024"&gt;The Third Cycle (2022-2024)&lt;/h2&gt;
&lt;p&gt;The third cycle, which is currently coming to an end, was about progress and adaptation. A focus to include environmental responsibility, operational efficiency, and inclusive design.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T15676"&gt;Sustainable Software&lt;/a&gt;: Focused on making KDE software more energy-efficient and environmentally friendly by implementing practices that reduce resource consumption and ensure long-term sustainability.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T15627"&gt;Automate and Systematize Internal Processes&lt;/a&gt;: Aimed to streamline KDE’s internal workflows by automating repetitive tasks, adding code tests across projects and creating a Quality Assurance team to name a few.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T15611"&gt;KDE For All&lt;/a&gt;: Seeked to make KDE software accessible and inclusive for all users.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="a-new-cycle-a-comin-2024-2026"&gt;A New Cycle A Comin' (2024-2026)&lt;/h2&gt;
&lt;p&gt;Now, as we enter the fourth cycle of the KDE Goals, we see the full power of this cumulative process. Each goal, whether fully achieved or not, contributes to the collective knowledge and capability of the KDE community. Ideas and partial solutions from past cycles become a solid foundation of knowledge and experience that support future efforts.&lt;/p&gt;
&lt;p&gt;The commmunity is currently voting on the following proposals for the next KDE Goals cycle that will guide our efforts and shape our focus for the coming years:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17435"&gt;Enhancing control and automation: integrate KDE Plasma (and apps) with Smart Home Ecosystems&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17458"&gt;Freedom through Better Data and Workflow Organization and Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17439"&gt;KDE Needs You! 🫵 - Formalise and boost KDE's processes for recruiting active contributors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17406"&gt;KDE-based Text Snippet Expansion&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17370"&gt;Sandbox all the things!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17408"&gt;Plasma - A Beacon for Open Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17372"&gt;Refining and Enriching KDE: Empowering Users with Convenient and Intuitive Features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17396"&gt;Streamlined Application Development Experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17391"&gt;Unify the Plasma experience&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://phabricator.kde.org/T17433"&gt;We care about your Input&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kde-goals-at-akademy"&gt;KDE Goals at Akademy&lt;/h2&gt;
&lt;p&gt;The three most voted goals will be &lt;a href="https://conf.kde.org/event/6/contributions/194/"&gt;announced&lt;/a&gt; at &lt;a href="https://akademy.kde.org/2024/"&gt;Akademy&lt;/a&gt;, where there will also be a &lt;a href="https://conf.kde.org/event/6/contributions/200/"&gt;wrap-up talk&lt;/a&gt; about the achievements of the current goals. Also, there will be &lt;a href="https://community.kde.org/Akademy/2024/Monday"&gt;Birds-of-a-feather (BoF)&lt;/a&gt; sessions with the new goal champions.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Join the &lt;a href="https://go.kde.org/matrix/#/%23goals:kde.org"&gt;Matrix room&lt;/a&gt; and keep an eye on the &lt;a href="https://kde.org/goals/"&gt;website&lt;/a&gt; for the latest KDE Goals updates.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>New Craft cache 24.08 published</title><link>https://blogs.kde.org/2024/08/18/new-craft-cache-24.08-published/</link><pubDate>Sun, 18 Aug 2024 00:00:00 +0000</pubDate><author>Julius Künzel</author><guid>https://blogs.kde.org/2024/08/18/new-craft-cache-24.08-published/</guid><description>&lt;p&gt;A new Craft cache has just been published. The update is already available for KDE's CD, CI will follow in the next hours or days.&lt;/p&gt;
&lt;p&gt;Please note that this only applies to the Qt6 cache. The Qt5 cache is in LTS mode since April 2024 and does not recieve major updates anymore.&lt;/p&gt;
&lt;h2 id="changes-highlights"&gt;Changes (highlights)&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Qt 6.7.2&lt;/li&gt;
&lt;li&gt;FFmpeg 7.0.1&lt;/li&gt;
&lt;li&gt;llvm 18.1.8&lt;/li&gt;
&lt;li&gt;boost 1.86.0&lt;/li&gt;
&lt;li&gt;OpenSSL 3.3.1 (for Android too, which was still on 1.1.1v until recently)&lt;/li&gt;
&lt;li&gt;CMake 3.30.0&lt;/li&gt;
&lt;li&gt;Ninja 1.12.1&lt;/li&gt;
&lt;li&gt;Removed qt-installer-framework (Windows)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="about-kde-craft"&gt;About KDE Craft&lt;/h2&gt;
&lt;p&gt;KDE Craft is an open source meta-build system and package manager. It manages dependencies and builds libraries and applications from source on Windows, macOS, Linux, FreeBSD and Android.&lt;/p&gt;
&lt;p&gt;Learn more on &lt;a href="https://community.kde.org/Craft"&gt;https://community.kde.org/Craft&lt;/a&gt; or join the Matrix room &lt;a href="https://go.kde.org/matrix/#/%23kde-craft:kde.org"&gt;#kde-craft:kde.org&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Farewell, Binary Factory! Add Craft Jobs for Your Apps to KDE's GitLab Now</title><link>https://blogs.kde.org/2024/01/30/farewell-binary-factory-add-craft-jobs-your-apps-kdes-gitlab-now/</link><pubDate>Tue, 30 Jan 2024 00:00:00 +0000</pubDate><author>Ingo Klöcker</author><guid>https://blogs.kde.org/2024/01/30/farewell-binary-factory-add-craft-jobs-your-apps-kdes-gitlab-now/</guid><description>&lt;p&gt;This is the final update on the migration of the Craft jobs from &lt;a href="https://binary-factory.kde.org"&gt;Binary Factory&lt;/a&gt; to &lt;a href="https://invent.kde.org"&gt;KDE's GitLab&lt;/a&gt;.
Since the &lt;a href="https://blogs.kde.org/2023/12/20/gitlab-microsoft-store"&gt;last blog&lt;/a&gt; the last missing pieces have been put in place.&lt;/p&gt;
&lt;p&gt;We now build a KF6 runtime which is used for the &lt;a href="https://userbase.kde.org/Tutorials/Flatpak#Nightly_KDE_Apps"&gt;nightly flatpaks&lt;/a&gt; of many of the apps that will be part of &lt;a href="https://kde.org/announcements/megarelease/6/rc1/"&gt;KDE's Megarelease 6&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Moreover, additionally to signing the sideload APPX packages (see &lt;a href="https://blogs.kde.org/2023/12/20/gitlab-microsoft-store"&gt;previous blog&lt;/a&gt;) the Windows Craft jobs now also sign the NSIS (&lt;code&gt;.exe&lt;/code&gt;) installers and all binaries included in the installers. This completes the port of the Windows Craft jobs from Binary Factory to KDE's GitLab.&lt;/p&gt;
&lt;p&gt;Now is the time to add GitLab jobs to your project for builds previously run on Binary Factory. The 24.02 release branch has been cleared for using our signing and publishing services, so that you can prepare builds of AppImages, Flatpaks, Android packages, macOS installers, and Windows installers for the 24.02 release of your project, or any other release if you release independent of KDE Gear. To enable those builds add one or more of the following &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/gitlab-templates?ref_type=heads#our-gitlab-cicd-pipelines"&gt;GitLab templates&lt;/a&gt; to your project's &lt;code&gt;.gitlab-ci.yml&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;craft-appimage.yml (Qt 5), craft-appimage-qt6.yml (Qt 6)&lt;/li&gt;
&lt;li&gt;flatpak.yml&lt;/li&gt;
&lt;li&gt;craft-android-apks.yml (Qt 5), craft-android-qt6-apks.yml (Qt 6)&lt;/li&gt;
&lt;li&gt;craft-macos-arm64.yml (Qt 5), craft-macos-arm64-qt6.yml (Qt 6)&lt;/li&gt;
&lt;li&gt;craft-macos-x86-64.yml (Qt 5), craft-macos-x86-64-qt6.yml (Qt 6)&lt;/li&gt;
&lt;li&gt;craft-windows-x86-64.yml (Qt 5), craft-windows-x86-64-qt6.yml (Qt 6)&lt;/li&gt;
&lt;li&gt;craft-windows-mingw64.yml (Qt 5), craft-windows-mingw64-qt6.yml (Qt 6)&lt;/li&gt;
&lt;/ul&gt;
All jobs except for the Flatpak job use Craft for building and packaging your app. You may have to add a &lt;code&gt;.craft.ini&lt;/code&gt; file to your project's root folder for &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/gitlab-templates?ref_type=heads#details"&gt;overriding the defaults&lt;/a&gt; of Craft and the Craft blueprints of your project or your project's dependencies.
&lt;p&gt;&lt;b&gt;What's Next&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Next I'll work on making it possible to create and publish Android Application Bundles (AAB) additionally to APKs for your Android apps. Application Bundles contain the binaries for all supported architectures in a single package (instead of multiple different APKs for each architecture). This packaging format is required for new applications published on Google Play.&lt;/p&gt;</description></item><item><title>From GitLab to Microsoft Store</title><link>https://blogs.kde.org/2023/12/20/gitlab-microsoft-store/</link><pubDate>Wed, 20 Dec 2023 00:00:00 +0000</pubDate><author>Ingo Klöcker</author><guid>https://blogs.kde.org/2023/12/20/gitlab-microsoft-store/</guid><description>&lt;p&gt;This is an update on the ongoing migration of jobs from &lt;a href="https://binary-factory.kde.org"&gt;Binary Factory&lt;/a&gt; to &lt;a href="https://invent.kde.org"&gt;KDE's GitLab&lt;/a&gt;. Since the &lt;a href="https://blogs.kde.org/2023/11/13/apks-now-built-invent"&gt;last blog&lt;/a&gt; a lot has happened.&lt;/p&gt;
&lt;p&gt;A first update of &lt;a href="https://apps.kde.org/itinerary"&gt;Itinerary&lt;/a&gt; was submitted to Google Play directly from our GitLab.&lt;/p&gt;
&lt;p&gt;Ben Cooksley has added a service for publishing our websites. Most websites are now built and published on our GitLab with only 5 websites remaining on Binary Factory.&lt;/p&gt;
&lt;p&gt;Julius Künzel has added a service for signing macOS apps and DMGs. This allows us to build signed installers for macOS on GitLab.&lt;/p&gt;
&lt;p&gt;The service for signing and publishing Flatpaks has gone live. Nightly Flatpaks built on our GitLab are now available at &lt;a href="https://cdn.kde.org/flatpak/"&gt;&lt;a href="https://cdn.kde.org/flatpak/"&gt;https://cdn.kde.org/flatpak/&lt;/a&gt;&lt;/a&gt;. For easy installation builds created since yesterday include &lt;a href="https://docs.flatpak.org/en/latest/repositories.html#flatpakref-files"&gt;.flatpakref&lt;/a&gt; files and &lt;a href="https://docs.flatpak.org/en/latest/hosting-a-repository.html#flatpakrepo-files"&gt;.flatpakrepo&lt;/a&gt; files.&lt;/p&gt;
&lt;p&gt;Last, but not least, similar to the full CI/CD pipeline for Android we now also have a full CI/CD pipeline for Windows. For Qt 5 builds this pipeline consists of the following GitLab jobs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;windows_qt515 - Builds the project with MSVC and runs the automatic tests.&lt;/li&gt;
&lt;li&gt;craft_windows_qt515_x86_64 - Builds the project with MSVC and creates various installation packages including (if enabled for the project) a &lt;code&gt;*-sideload.appx&lt;/code&gt; file and a &lt;code&gt;*.appxupload&lt;/code&gt; file.&lt;/li&gt;
&lt;li&gt;sign_appx_qt515 - Signs the &lt;code&gt;*-sideload.appx&lt;/code&gt; file with KDE's signing certificate. The signed app package can be downloaded and installed without using the Microsoft store.&lt;/li&gt;
&lt;li&gt;microsoftstore_qt515 - Submits the &lt;code&gt;*.appxupload&lt;/code&gt; package to the Microsoft store for subsequent publication. This job doesn't run automatically.&lt;/li&gt;
&lt;/ul&gt;
Notes:
&lt;ul&gt;
&lt;li&gt;The craft_windows_qt515_x86_64 job also creates &lt;code&gt;.exe&lt;/code&gt; installers. Those installers are not yet signed on GitLab, i.e. Windows should warn you when you try to install them. For the time being, you can download signed &lt;code&gt;.exe&lt;/code&gt; installers from Binary Factory.&lt;/li&gt;
&lt;li&gt;There are also jobs for building with MinGW, but MinGW builds cannot be used for creating app packages for the Microsoft Store. (It's still possible to publish apps with MinGW installers in the Microsoft Store, but that's a different story.)&lt;/li&gt;
&lt;/ul&gt;
The workflow for publishing an update of an app in the Microsoft Store as I envision it is as follows:
&lt;ol&gt;
&lt;li&gt;You download the signed sideload app package, install it on a Windows (virtual) machine (after uninstalling a previously installed version) and perform a quick test to ensure that the app isn't completely broken.&lt;/li&gt;
&lt;li&gt;Then you trigger the microsoftstore_qt515 job to submit the app to the Microsoft Store. This creates a new draft submission in the Microsoft Partner Center. The app is not published automatically. To actually publish the submission you have to log into the Microsoft Partner Center and commit the submission.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Enabling the Windows CD Pipeline for Your Project&lt;/h2&gt;
If you want to start building Windows app packages (APPX) for your project then add the &lt;code&gt;craft-windows-x86-64.yml&lt;/code&gt; template for Qt 5 or the &lt;code&gt;craft-windows-x86-64-qt6.yml&lt;/code&gt; template for Qt 6 to the &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; of your project. Additionally, you have to add a &lt;code&gt;.craft.ini&lt;/code&gt; file with the following content to the root of your project to enable the creation of the Windows app packages.
&lt;pre&gt;&lt;code class="language-ini"&gt;[BlueprintSettings]
kde/applications/myapp.packageAppx = True
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;kde/applications/myapp&lt;/code&gt; must match the path of your project's &lt;a href="https://invent.kde.org/packaging/craft-blueprints-kde"&gt;Craft blueprint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;When you have successfully built the first Windows app packages then add the &lt;code&gt;craft-windows-appx-qt5.yml&lt;/code&gt; or the &lt;code&gt;craft-windows-appx-qt6.yml&lt;/code&gt; template to your &lt;code&gt;.gitlab-ci.yml&lt;/code&gt; to get the sign_appx_qt* job and the microsoftstore_qt* job.&lt;/p&gt;
&lt;p&gt;To enable signing your project (more precisely, a branch of your project) needs to be cleared for using the signing service. This is done by adding your project to the &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/signing#appxsigner"&gt;project settings of the appxsigner&lt;/a&gt;. Similarly, to enable submission to the Microsoft Store your project needs to be cleared by adding it to the &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/signing#microsoftstorepublisher"&gt;project settings of the microsoftstorepublisher&lt;/a&gt;. If you have carefully curated metadata set in the store entry of you app that shouldn't be overwritten by data from your app's AppStream data then have a look at the &lt;code&gt;keep&lt;/code&gt; setting for your project. I recommend to use &lt;code&gt;keep&lt;/code&gt; sparingly if at all because at least for text content you will deprive people using the store of all the translations added by our great translation teams to your app's AppStream data.&lt;/p&gt;
&lt;p&gt;Note that the first submission to the Microsoft Store has to be done &lt;a href="https://develop.kde.org/docs/packaging/microsoftstore/"&gt;manually&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>APKs now built on invent</title><link>https://blogs.kde.org/2023/11/13/apks-now-built-invent/</link><pubDate>Mon, 13 Nov 2023 00:00:00 +0000</pubDate><author>Ingo Klöcker</author><guid>https://blogs.kde.org/2023/11/13/apks-now-built-invent/</guid><description>&lt;p&gt;The migration of jobs from &lt;a href="https://binary-factory.kde.org"&gt;Binary Factory&lt;/a&gt; to &lt;a href="https://invent.kde.org"&gt;KDE's GitLab&lt;/a&gt; continues. Last week almost all jobs that built APKs were migrated to invent.kde.org. The only remaining Android job on Binary Factory doesn't use Craft.&lt;/p&gt;
&lt;p&gt;The &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/blob/master/gitlab-templates/README.md?ref_type=heads#android-1"&gt;Android APK jobs&lt;/a&gt; running on invent are the first jobs that make use of our &lt;a href="https://invent.kde.org/sysadmin/ci-notary-service"&gt;CI Notary Services&lt;/a&gt; delegating tasks that require sensitive information (e.g. the keys to sign the APKs or the credentials to upload the APKs to our F-Droid repositories) to services running outside of GitLab. Currently, the &lt;a href="https://invent.kde.org/sysadmin/ci-notary-service/-/blob/master/doc/apksigner.md?ref_type=heads"&gt;apksigner&lt;/a&gt; service and the &lt;a href="https://invent.kde.org/sysadmin/ci-notary-service/-/blob/master/doc/fdroidpublisher.md?ref_type=heads"&gt;fdroidpublisher&lt;/a&gt; service are live. The configuration of the services can be found in the &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/signing?ref_type=heads"&gt;sysadmin/ci-utilities&lt;/a&gt; repository.&lt;/p&gt;
&lt;p&gt;As before, the APKs are published in our F-Droid repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://cdn.kde.org/android/stable-releases/fdroid/repo/"&gt;KDE Android Release Builds&lt;/a&gt; provides APKs built from the 23.08 branches.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cdn.kde.org/android/nightly/fdroid/repo/"&gt;KDE Android Nightly Builds&lt;/a&gt; provides APKs built from the master branches.&lt;/li&gt;
&lt;/ul&gt;
Many apps have already switched from Qt 5 to Qt 6, but the Qt 6 APKs are not yet ready for public consumption. Not even as nightly builds. Therefore many &amp;quot;nightly&amp;quot; builds are many weeks old.
&lt;p&gt;The migration to invent has a few implications. On Binary Factory all APKs (release and nightly) were rebuilt once a day even if nothing changed. On invent the APKs are rebuilt whenever a change is pushed to the release/23.08 branch or the master branch of a project. Another change is that on invent any KDE developer can manually trigger a new pipeline to build the APKs (e.g. if a bug in a dependency was fixed). On Binary Factory you often needed to ask someone to trigger a build for you.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Building APKs&lt;/b&gt;
If you want to start building APKs for your project then add the &lt;code&gt;craft-android-apks.yml&lt;/code&gt; template for Qt 5 or the &lt;code&gt;craft-android-qt6-apks.yml&lt;/code&gt; template for Qt 6 to the &lt;code&gt;.gitlab-ci-yml&lt;/code&gt; of your project. Note that you must use the &lt;code&gt;include:project&lt;/code&gt; format (&lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/gitlab-templates?ref_type=heads#our-gitlab-cicd-pipelines"&gt;example&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The jobs will build unsigned APKs. To enable signing your project (more precisely, a branch of your project) needs to be cleared for using the signing service. This is done by adding your project to the &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/signing?ref_type=heads#apksigner"&gt;project settings of the apksigner&lt;/a&gt;. The master branch is cleared by default for all applications listed in the project settings, so that you only need to add two lines: The repo path on invent and the ID of your application. The key used to sign your application will best be created by us directly on the machine that does the signing.&lt;/p&gt;
&lt;p&gt;Once you think the APKs are ready for publication you can enable publishing in our F-Droid repositories by adding your project to the &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/signing?ref_type=heads#fdroidpublisher"&gt;project settings of the fdroidpublisher&lt;/a&gt;. Because some Qt 6 APKs are not yet ready for publication although their build succeeds, by default the master branch is not cleared for publishing. This means you will have to add five lines to the project settings of fdroidpublisher.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Outlook&lt;/b&gt;
To complete the Android jobs/services a job/service for submitting APKs to Google Play will go live soon. It's currently only used by &lt;a href="https://apps.kde.org/itinerary"&gt;Itinerary&lt;/a&gt; but, in view of our &lt;a href="https://www.youtube.com/watch?v=MzpoTuHuciE"&gt;Make a Living&lt;/a&gt; initiative, we hope to publish more apps on Google Play to create some revenue to fund our work. Creating and publishing Android Application Bundles (AAB), the new packaging format required for new applications published on Google Play, will follow soon after.&lt;/p&gt;
&lt;p&gt;Then we'll add signing of Windows artifacts and installers and submission to the Microsoft Store, signing and publishing of Flatpaks, and signing and publishing of builds for macOS.&lt;/p&gt;</description></item><item><title>NeoChat Published in the Microsoft Store</title><link>https://blogs.kde.org/2023/01/16/neochat-published-microsoft-store/</link><pubDate>Mon, 16 Jan 2023 00:00:00 +0000</pubDate><author>Ingo Klöcker</author><guid>https://blogs.kde.org/2023/01/16/neochat-published-microsoft-store/</guid><description>&lt;p&gt;Carl Schwan already announced it on &lt;a href="https://discuss.kde.org/t/neochat-is-now-available-on-the-windows-store/107"&gt;discuss.kde.org&lt;/a&gt; and at &lt;a href="https://fosstodon.org/@neochat/109624702727489819"&gt;@neochat@fosstodon.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In this blog we’ll see how it was done and how you can publish your KDE app in the &lt;a href="https://apps.microsoft.com/store/search?publisher=KDE%20e.V."&gt;Microsoft Store&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Reserving a Name and Age Rating Your App&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The first step requires some manual work. In &lt;a href="https://partner.microsoft.com/en-us/dashboard/windows/overview"&gt;Microsoft Partner Center&lt;/a&gt; you need to create a new app by reserving a name and complete a first submission. How to do this has been described by Christoph Cullmann in the &lt;a href="https://kate-editor.org/post/2019/2019-11-03-windows-store-submission-guide/"&gt;Windows Store Submission Guide&lt;/a&gt;. Don’t hesitate to reserve the name of your app even if you are not yet ready for the first submission to the Microsoft Store. Once a name is reserved nobody else can publish an app with this name.&lt;/p&gt;
&lt;p&gt;The first submission needs to be done manually because you will have to answer the age ratings questionnaire. NeoChat was rated 18+ because it allows you to publish all kinds of offensive content on public Matrix rooms. Filling out the questionnaire was quite amusing because I did it together with the NeoChat crowd at &lt;a href="https://webchat.kde.org/#/room/#neochat:kde.org"&gt;#neochat:kde.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On the first submission of NeoChat I chose to restrict the visibility to &lt;i&gt;Private audience&lt;/i&gt; until it was ready for public consumption. I created a new customer group &lt;i&gt;NeoChat Beta Testers&lt;/i&gt; with the email address of my regular Microsoft Store account in &lt;a href="https://partner.microsoft.com/en-us/dashboard/analytics/customers"&gt;Microsoft Partner Center&lt;/a&gt; and then selected this group under &lt;i&gt;Private audience&lt;/i&gt;. This way I could test installing NeoChat with the Microsoft Store app before anybody else could see it.&lt;/p&gt;
&lt;p&gt;Don’t spend too much time filling out things like Description, Screenshots, etc. under Store Listings because some of this information will be added automatically from the AppStream data of your app for all available translations.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Semi-automatic App Submissions&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The next submissions of NeoChat were done semi-automatically via the Microsoft Submission API with the &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/tree/master/microsoft-store"&gt;submit-to-microsoft-store.py&lt;/a&gt; script while writing this Python script and the underlying general Microsoft Store API Python module &lt;a href="https://invent.kde.org/kloecker/microstore"&gt;microstore&lt;/a&gt;. The script is based on a Ruby prototype (&lt;a href="https://invent.kde.org/sdk/releaseme/-/blob/work/windowsstore/windows.rb"&gt;windows.rb&lt;/a&gt;) written by Harald Sitter.&lt;/p&gt;
&lt;p&gt;The idea is that the script is run by a (manual) CI job that the app’s release manager can trigger if they want to publish a new version on the Microsoft Store.&lt;/p&gt;
&lt;p&gt;To run the script locally you need the credentials for an Azure AD application associated with KDE’s Partner Center account. Anything else you need to know is documented in the script’s &lt;a href="https://invent.kde.org/sysadmin/ci-utilities/-/blob/work/kloecker/submit-to-ms-store/microsoft-store/README.md"&gt;README.md&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Making NeoChat Publically Available&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The last step of the process to get NeoChat published in the Microsoft Store was another manual submission which just changed the visibility to &lt;i&gt;Private audience&lt;/i&gt;. This could also have been done via the Microsoft Submission API (but not with the current version of the script), but I think it’s good to have a last look at the information about the app before it is published. In particular, you may have to fill out the &lt;i&gt;Notes for certification&lt;/i&gt;, e.g. if your app cannot be tested without a service or social media account. For NeoChat we had to provide a test account for Matrix.&lt;/p&gt;
&lt;p&gt;Moreover, you may want to fill out some details that are currently not available in the AppStream data, e.g. a list of &lt;i&gt;Product features&lt;/i&gt;, the &lt;i&gt;Copyright and trademark info&lt;/i&gt;, or special screenshots of the Windows version of your app.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;What’s Next&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;On &lt;a href="https://invent.kde.org"&gt;our GitLab instance&lt;/a&gt;, we want to provide a full CI/CD pipeline for building and publishing our KDE apps on the Microsoft Store (and many other app stores). A few important things that require special credentials or signing certificates are still missing to complete this pipeline.&lt;/p&gt;
&lt;p&gt;And we want to get more KDE apps into the Microsoft Store.&lt;/p&gt;
&lt;p&gt;If you need help with getting your KDE app into the Microsoft Store, then come find me in the &lt;a href="https://webchat.kde.org/#/room/#kde-windows:kde.org"&gt;#kde-windows room&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Updates after publication:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2023-01-31: Updated link to script after merge of the MR&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>