From GitLab to Microsoft Store
This is an update on the ongoing migration of jobs from Binary Factory to KDE's GitLab. Since the last blog a lot has happened.
A first update of Itinerary was submitted to Google Play directly from our GitLab.
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.
Julius Künzel has added a service for signing macOS apps and DMGs. This allows us to build signed installers for macOS on GitLab.
The service for signing and publishing Flatpaks has gone live. Nightly Flatpaks built on our GitLab are now available at https://cdn.kde.org/flatpak/. For easy installation builds created since yesterday include .flatpakref files and .flatpakrepo files.
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:
- windows_qt515 - Builds the project with MSVC and runs the automatic tests.
- craft_windows_qt515_x86_64 - Builds the project with MSVC and creates various installation packages including (if enabled for the project) a
*-sideload.appx
file and a*.appxupload
file. - sign_appx_qt515 - Signs the
*-sideload.appx
file with KDE's signing certificate. The signed app package can be downloaded and installed without using the Microsoft store. - microsoftstore_qt515 - Submits the
*.appxupload
package to the Microsoft store for subsequent publication. This job doesn't run automatically.
- The craft_windows_qt515_x86_64 job also creates
.exe
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.exe
installers from Binary Factory. - 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.)
- 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.
- 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.
Enabling the Windows CD Pipeline for Your Project
If you want to start building Windows app packages (APPX) for your project then add thecraft-windows-x86-64.yml
template for Qt 5 or the craft-windows-x86-64-qt6.yml
template for Qt 6 to the .gitlab-ci.yml
of your project. Additionally, you have to add a .craft.ini
file with the following content to the root of your project to enable the creation of the Windows app packages.[BlueprintSettings]
kde/applications/myapp.packageAppx = True
kde/applications/myapp
must match the path of your project's Craft blueprint.
When you have successfully built the first Windows app packages then add the craft-windows-appx-qt5.yml
or the craft-windows-appx-qt6.yml
template to your .gitlab-ci.yml
to get the sign_appx_qt* job and the microsoftstore_qt* job.
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 project settings of the appxsigner. Similarly, to enable submission to the Microsoft Store your project needs to be cleared by adding it to the project settings of the microsoftstorepublisher. 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 keep
setting for your project. I recommend to use keep
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.
Note that the first submission to the Microsoft Store has to be done manually.