diff options
author | Guido Günther <agx@sigxcpu.org> | 2024-03-06 16:47:19 +0100 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2024-03-07 20:07:14 +0100 |
commit | 5c59eeda5c0d7666ea6855b83133bc99ec5744c1 (patch) | |
tree | 1b9facb63178c7dc7e14c1b99701a203d7fe1c07 | |
parent | 3ea8651b8dc3d6ce8323abdb4f848de51881e4fa (diff) |
Add phosh nightly post
-rw-r--r-- | content/posts/phosh-nightly/index.md | 209 | ||||
-rw-r--r-- | content/posts/phosh-nightly/pipeline-nightly.png | bin | 0 -> 16278 bytes |
2 files changed, 209 insertions, 0 deletions
diff --git a/content/posts/phosh-nightly/index.md b/content/posts/phosh-nightly/index.md new file mode 100644 index 0000000..720175e --- /dev/null +++ b/content/posts/phosh-nightly/index.md @@ -0,0 +1,209 @@ ++++ +authors = ["Guido Günther"] +title = "Phosh Nightly Package Builds" +date = "2024-03-07T15:19:30+01:00" +tags = [ "phosh", "development", "debian", "planetdebian" ] +images = ["posts/phosh-nightly/pipeline-nightly.png"] ++++ + +# Tightening the feedback loop + +One thing we notice ever so often is that although Phosh's source code +is [publicly available][1] and upcoming changes are [open for review][2] the +feedback loop between changes being made to the development branch and +users noticing the change can still be quiet long. + +This can be problematic as we ideally want to catch a regression or +broken use case triggered by a change on the development branch (aka +`main`) *before* the general availability of a new version. + +Not doing so can then lead to extra churn for both users and developers +because at the point in time the issue is spotted/reported the developer's +focus is usually somewhere else entirely already and hence the issue +might get less immediate attention than it should have. + +To mitigate that we already + +- Use GNOME gitlab's CI (thanks a lot [GNOME](https://gitlab.gnome.org)!) + to catch things upfront +- Release [on a monthly basis][5] to shorten the time between a feature getting + merged and "general availability". +- Make it simple to [run Phosh nested][0] so changes can be validated + without installing anything + +But even with the above it's a bit tricky to do a "real live" test of a +certain component at it's current development version as it usually +requires to invoke a package build or manual download of a package or +tarball. + +# Nightly Builds + +So to improve on this we aim to provide nightly Debian package builds of +several of Phosh's components built against [Debian Trixie][3]. +[These jobs](https://source.puri.sm/guido.gunther/phosh-debs) +fetch the projects `main` branches and after applying possible packaging tweaks +and building packages for amd64 and arm64 upload the packages into a +common *[phosh-nightly][]* repository. Thus if a change gets applied +to a projects `main` branch it should be available in a packaged form +a couple of hours later. + +{{< image name="pipeline-nightly.png" title="Gitlab CI Pipeline for nightly builds" >}} + +This makes it easier for you to: + +- Verify if a bug you filed and that was closed as fixed is really fixed + in the way you expect it +- Help test the next release before it's getting tagged +- Test a newer version before filing an issue to make sure that + version is still affected +- Help out by continuously testing development versions + +We picked Debian Trixie as a base since it's Debian's current testing +distribution and builds the base for other, mobile focused distributions +like [Mobian][] Trixie, an upcoming [PureOS][] version based on +Trixie, etc. so packages can be tested there too. Once Debian releases +Trixie and it becomes stable we'll switch the nightly builds to +Debian's new testing (codenamed Forky). + +As initial set we build the Shell phosh, the compositor phoc, the +mobile settings application, the tour, phosh-osk-stub, calls and +chatty for amd64 and arm64. We don't provide builds for software that +is available as [nightly flatpak](https://wiki.gnome.org/Apps/Nightly) +builds as that would be duplication. + +# Setup + +In order to use the nightly packages you need to add a new apt source. +This is achieved via by the following commands: + +``` +cat <<EOF >/etc/apt/sources.list.d/phosh-nightly.sources +Types: deb +URIs: http://deb.phosh.mobi/nightly/ +Suites: trixie-nightly +Components: main +Signed-By: + -----BEGIN PGP PUBLIC KEY BLOCK----- + + mQINBGXoHOYBEAC/893ifemxPCa3l+46Vtpjiew4Eu+c3kXEj6sEOQZS8+ZvJ93O + So3cEe7tqPM8AjqPjO6GsBjqr86swk5bbZ70GIqo1H2p9JdBaiQWqTDXxXRDvel5 + 0SaxbUQvLm880pjS/gcsBezRv8vb9dxDsPMzap6GuJnF5QqagfOX8B1aQKCywJNo + QoFc3RL7c3j2hLRpI4kdfcjo2j3GtjKb+ojWja9dng/gsMlrHYEqS+aWg+eVFnLM + XkwJXS/4AQjooH9qC+swtVNYYzt7wQdCm1mNFfrXDHSLse0ugyESqZ8AN5d9bUlB + fAae7xv/lV3QfozSolFODvXlBjNaCDYb1r8Rag01eM83b1Wv/R23enFO18p/UW9k + +/wk+kOqUfEd+0NBkXdRQiCrvwxHs51IqMFH5aAhM9lHmaHYmdPjETdeYPeKlA22 + CYLCkApEazGNPZGt6Kv7XeBwiI+6DScbHxr+j9S/j9+7BuMs6MItE4J9EtavkFtr + aw/ijGsifCKJWpkD28uZ3h83qi8diUwRde0zrX4SJAUi/T2UXPywep1z6bQ70Vaf + YrciSOndw5zWiTYMUDl6q7iZR6vloiZMoGf7psLx1y0Vg4Sq8DPldXAMpaNPh8+Z + UhqD94pBGg+iVaYII8MeWHaqtHc0ewQAKAq121rulOuZgaRbl/5LuQp8rQARAQAB + tD1QaG9zaCBEZWJpYW4gUGFja2FnZXMgKEFyY2hpdmUgU2lnbmluZyBLZXkpIDxk + ZWJzQHBob3NoLm1vYmk+iQJUBBMBCgA+AhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4B + AheAFiEEeHJPmfZ/wlY1lpbHLf0ViOUfQ7IFAmXoV34FCQlmPBgACgkQLf0ViOUf + Q7JWNxAApMQeEKSto6LGZkdqoKXCZgaXg//2UeAnkhK9+Z1hZ2Do7RYhoOW994yi + FqtZ92WVMqzbK0EqfEnFX8yVzM1cXo3PgouCDCgTy060YmH0OV2XxThr8fJ4uZfW + vib9HE+W4o/dgoMSy3BlPtpB1y/gevgJGoHAtQbV6Ex4bRL89i8pOQJYPYRx5Xj0 + 4SADUWWjOnY9AZbykUlMuRFSOMBWITn8yqUCYPpw8bGbtFignfvK1iRcW5LIkrtY + XsOlQCK5+ttNAMUkCeI93LGYhSZUqbpt87tdkbCP5qfV7o7Vkv8iObKw8fxKh2o1 + oijY8S6ZqEl/CZjDtKcdvsQrEvY3Z1KX0xUNn01PFrHGzRiTn7eieXF4O3PCM2zJ + 1TGva0gliKUgdN4y8W6Ul1H74T3rhZWpNO10rotfnvyX6AP/bLlkdMdSpL85mcqt + PfSROQGcKOU6WmF1G2MvwzBY6sjP3IN95qqnaBKa1IJGBPFt5IsY8eoqdNuNkeRT + W3OFcBQas+1RQdDzOZ7svJIX9fNBubebtnB20mRYIwESkhQMO2VpjyrBPzUP+bum + kg/7Lx/Gr+OdH2SzNfeTr+28foyKExf2wdhbICErm+eRq1Bh4dFe6ljN/YBUVdEq + MHjCZ4GQaiw5Uq+5sQTUWYkFeb/j3NeRadmSTshinPgTISGNYBo= + =lIij + -----END PGP PUBLIC KEY BLOCK----- +EOF + +apt update +``` + +If copy and paste is troublesome you can also get get the +`phosh-nightly.sources` [here][4] and put it into +`/etc/apt/sources.list.d`/. + +# Installing packages + +The repo is (similar to Debian's backports) set up in a way that +packages aren't fetched from it by default - so you can still safely +`apt upgrade` with the above added to your apt sources without pulling +all nightly packages accidentally. + +Now if you want to pick a nightly build (e.g. for phoc) you'd do + +``` +apt install -t trixie-nightly phoc +``` + +This will fetch the nightly build and also continue to pick it from +that repository on further updates. When you want to go back to the +version shipped in Debian you do: + +``` +apt install phoc/trixie +``` + +It's as simple as that and the preferred way as it allows you to +test changes on a per package basis. + + +Should you want to pull all packages from the nightly repo you can +do: + +``` +apt install -t trixie-nightly full-upgrade +``` + +but be careful to check what packages exactly get installed/removed in +this case. + + +# Finding packages from the nightly repo + +If you want to figure out the packages you got form the nightly repo +you can use [apt-forktracer](https://packages.debian.org/trixie/apt-forktracer): + +``` +apt-forktracer | grep '\+nb' +``` + +On a system that pulled phosh, phoc and mobile-settings and the matching +debug packages the result looks like: + +``` +phosh-plugins (0.36.0+next20240208.1519.f5176c759.1) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1] +phoc (0.36.0+nb20240306.4312881) [Phosh: 0.36.0+nb20240306.4312881] [Debian: 0.36.0+ds-1 0.36.0+ds-1] +phosh-plugins-dbgsym (0.36.0+next20240208.1519.f5176c759.1) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1] +phosh-dbgsym (0.36.0+nb20240306.4312891) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1] +phosh (0.36.0+nb20240306.4312891) [Phosh: 0.36.0+nb20240306.4312891] [Debian: 0.36.0-1 0.36.0-1] +phoc-dbgsym (0.36.0+nb20240306.4312881) [Phosh: 0.36.0+nb20240306.4312881] [Debian: 0.36.0+ds-1 0.36.0+ds-1] +phosh-mobile-settings (0.36.0+nb20240306.4312901) [Phosh: 0.36.0+nb20240306.4312901] [Debian: 0.36.0-1 0.36.0-1] +``` + +This version information is useful to provide in bug reports as it +allows to identify the exact git commit the package was built from. + +# Closing + +Note that you're testing unreleased software so always make sure you +can recover by going back to the Debian version e.g. via `ssh` login. +Also make sure to not bother the Debian, Mobian or PureOS devs with +bugs in these version. Issues detected in the nightly builds can go +directly upstream. If you have trouble to figure out the right +component start at [phosh](https://gitlab.gnome.org/World/Phosh/phosh/-/issues). + +Have fun testing the nightly builds! + +This work is possible thanks to your [donations](https://liberapay.com/Phosh) +and [Purism](https://source.puri.sm)'s gitlab runners used to do the builds. + +[0]: https://phosh.mobi/posts/phosh-dev-part-0/ +[1]: https://gitlab.gnome.org/World/Phosh/phosh +[2]: https://gitlab.gnome.org/World/Phosh/phosh/-/merge_requests +[3]: https://www.debian.org/releases/trixie/ +[4]: http://deb.phosh.mobi/nightly/misc/phosh-nightly.sources +[5]: https://phosh.mobi/releases/ +[phosh-nightly]: https://deb.phosh.mobi/nightly/ +[Debian]: https://debian.org +[Mobian]: https://mobian.org +[PureOS]: https://pureos.net + diff --git a/content/posts/phosh-nightly/pipeline-nightly.png b/content/posts/phosh-nightly/pipeline-nightly.png Binary files differnew file mode 100644 index 0000000..2f856aa --- /dev/null +++ b/content/posts/phosh-nightly/pipeline-nightly.png |