|
|
|
|
# Releasing Fractal
|
|
|
|
|
|
|
|
|
|
## Before making a new release
|
|
|
|
|
|
|
|
|
|
- Update the dependencies (crates or system libraries) and migrate from deprecated APIs.
|
|
|
|
|
- Make the `build-stable` CI jobs use the latest stable GNOME runtime.
|
|
|
|
|
|
|
|
|
|
## Making a new stable release
|
|
|
|
|
|
|
|
|
|
1. If this is a new major version, create a new `fractal-M` branch, where `M` is the major version
|
|
|
|
|
number.
|
|
|
|
|
2. Create a [release merge request](#release-merge-request-content) against the major version
|
|
|
|
|
branch.
|
|
|
|
|
3. After the MR is merged, [create a tag](#creating-a-signed-tag) on the last commit of the major
|
|
|
|
|
version branch.
|
|
|
|
|
4. Create a release on GitLab for that tag.
|
|
|
|
|
5. Make a fast-forward merge of the major version branch to `main`.
|
|
|
|
|
6. [Publish the new version on Flathub and Flathub beta](#publishing-a-version-on-flathub).
|
|
|
|
|
7. [Get the stable branch added to Damned Lies](#getting-a-branch-added-to-damned-lies).
|
|
|
|
|
|
|
|
|
|
## Making a new beta release
|
|
|
|
|
|
|
|
|
|
1. Create a [release merge request](#release-merge-request-content) against `main`.
|
|
|
|
|
2. After the MR is merged, [create a tag](#creating-a-signed-tag) on the last commit of `main`.
|
|
|
|
|
3. Create a release on GitLab for that tag.
|
|
|
|
|
4. [Publish the new version on Flathub beta](#publishing-a-version-on-flathub).
|
|
|
|
|
|
|
|
|
|
## Release merge request content
|
|
|
|
|
|
|
|
|
|
_To represent conditional list items, this section will start items with "**stable.**" to mean "if
|
|
|
|
|
this is a stable release"._
|
|
|
|
|
|
|
|
|
|
Make a single release commit containing the following changes:
|
|
|
|
|
|
|
|
|
|
- Update `/meson.build`:
|
|
|
|
|
- Change the version on L3, it must look the same as it would in the app, with a
|
|
|
|
|
`major_version.pre_release_version` format.
|
|
|
|
|
- Change the `major_version` and `pre_release_version` on L13-14. For stable versions,
|
|
|
|
|
`pre_release_version` should be an empty string.
|
|
|
|
|
- Update `/Cargo.toml`: change the `version`, using a semver format.
|
|
|
|
|
- Update `/README.md`:
|
|
|
|
|
- **stable.** update the current stable version and its release date.
|
|
|
|
|
- Update the current beta version. For stable versions, put `(same as stable)` instead of the
|
|
|
|
|
release date.
|
|
|
|
|
- Update `/data/org.gnome.Fractal.metainfo.xml.in.in`:
|
|
|
|
|
- Add a new `release` entry at the top of the `releases`:
|
|
|
|
|
- Its `version` should use the `major_version~pre_release_version` format.
|
|
|
|
|
- For stable versions, its `type` should be `stable`, otherwise it should be `development`.
|
|
|
|
|
- **stable.** remove all the `development` entries.
|
|
|
|
|
- **stable.** update the paths of the screenshots to point to the major version branch.
|
|
|
|
|
- **stable.** If there were visible changes in the UI, update the screenshots in `/screenshots`.
|
|
|
|
|
They should follow [Flathub's quality guidelines](https://docs.flathub.org/docs/for-app-authors/metainfo-guidelines/quality-guidelines#screenshots),
|
|
|
|
|
with the following window sizes:
|
|
|
|
|
- `main.png`: 760×550.
|
|
|
|
|
- `adaptive.png`: 360×600.
|
|
|
|
|
- `media-history.png`: 500×540.
|
|
|
|
|
|
|
|
|
|
A good practice in this merge request is to launch the `build-stable` CI jobs to make sure that
|
|
|
|
|
Fractal builds with the stable Flatpak runtime.
|
|
|
|
|
|
|
|
|
|
## Creating a signed tag
|
|
|
|
|
|
|
|
|
|
Creating a signed tag is not mandatory but is good practice. To do so, use this command:
|
|
|
|
|
|
|
|
|
|
```sh
|
|
|
|
|
git tag -s V
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
With `V` being the version to tag, in the format `major_version.pre_release_version`.
|
|
|
|
|
|
|
|
|
|
You will be prompted for a tag message. This message doesn't really matter so something like
|
|
|
|
|
`Release Fractal V` should suffice.
|
|
|
|
|
|
|
|
|
|
## Publishing a version on Flathub
|
|
|
|
|
|
|
|
|
|
Publishing a version of Fractal on Flathub is done via its [Flathub repository on GitHub](https://github.com/flathub/org.gnome.Fractal/).
|
|
|
|
|
A permission from the Flathub team granted to your GitHub account is necessary to merge PRs on this
|
|
|
|
|
repository and interact with the buildbot, but anyone can open a PR.
|
|
|
|
|
|
|
|
|
|
1. Open a PR against the correct branch. For a stable build, work against the `master` branch, for a
|
|
|
|
|
beta build, work against the `beta` branch. It must contain a commit that updates the manifest to:
|
|
|
|
|
- Use the latest GNOME runtime.
|
|
|
|
|
- Make sure that the Flatpak dependencies are the same as in the nightly manifest, and using the
|
|
|
|
|
same version.
|
|
|
|
|
- Build the latest version of Fractal, identified by its tag _and_ commit hash.
|
|
|
|
|
2. When the PR is opened, a CI job will update the `cargo-sources.json` file with the latest Rust
|
|
|
|
|
dependencies for Fractal and add a commit to the PR.
|
|
|
|
|
3. The Flathub buildbot will likely launch 2 builds, one for when the PR was opened, and another one
|
|
|
|
|
after the `cargo-sources.json` commit. You can stop any of those 2 builds, as long as the
|
|
|
|
|
remaining one uses the latest commit as the `flathub_revision` in the `Build Properties` tab.
|
|
|
|
|
4. Once the build succeeds, test the generated Flatpak as instructed and watch for obvious errors.
|
|
|
|
|
If there are no issues, merge the PR.
|
|
|
|
|
5. To watch the next steps, go to https://buildbot.flathub.org/. You should see a job for Fractal
|
|
|
|
|
start soon, unless there is a queue in `Builds > Pending Buildrequests`. Open that job and wait
|
|
|
|
|
for it to complete. When it is complete, there will be instructions again to test that build.
|
|
|
|
|
6. If everything is fine with the build, click the `Publish` button to publish the build right away.
|
|
|
|
|
If this is not done, the build will be published anyway after 3 to 4 hours. There can be some time
|
|
|
|
|
before the publish job is complete and `flatpak update` offers to update the app.
|
|
|
|
|
|
|
|
|
|
## Launching a build manually for Flathub
|
|
|
|
|
|
|
|
|
|
In most cases, this should not be necessary. Flathub launches builds automatically for PRs and after
|
|
|
|
|
a PR is merged. If those builds fail, there is a `Rebuild` button to trigger a new build. However in
|
|
|
|
|
some cases, if the previous builds are not available anymore, if is necessary to trigger a build
|
|
|
|
|
manually:
|
|
|
|
|
|
|
|
|
|
1. Go to https://buildbot.flathub.org/ and log in.
|
|
|
|
|
2. Click on `Start build`.
|
|
|
|
|
3. Enter only the App ID. It is `org.gnome.Fractal` for the stable branch, and
|
|
|
|
|
`org.gnome.Fractal/beta` for the beta branch.
|
|
|
|
|
4. If you only want to trigger a test build, i.e. one that will not be published in the end, check
|
|
|
|
|
the corresponding setting.
|
|
|
|
|
5. Click on `Start build`.
|
|
|
|
|
|
|
|
|
|
## Getting a branch added to Damned Lies
|
|
|
|
|
|
|
|
|
|
Damned Lies is the GNOME translation management platform. It provides translation workflows, but
|
|
|
|
|
also statistics. Even though we don’t publish any release from stable branches after the initial
|
|
|
|
|
one, we add them there so we can keep track of the evolution of translation coverage.
|
|
|
|
|
|
|
|
|
|
1. Go to https://l10n.gnome.org/module/fractal/ and log in.
|
|
|
|
|
2. Click on the pencil icon next to the branch list.
|
|
|
|
|
3. In the entry at the bottom, type in the name of the new branch, then click on the Save button.
|
|
|
|
|
4. Assign the newly added branch to the “Other Apps (stable)” Release, unassign the previous one.
|
|
|
|
|
5. Hit Save again for the assignments to take effect.
|