devel-docs: release-howto updated.

Update in particular the tarball creation steps. We now use tarballs
generated by the CI. I still leave information for doing it locally in
this howto, but mostly so that we can easily find this info for testing
or fixing dist bugs when needed. Other than this, if the CI works
flawlessly, a successful pipeline ends up with a proper tarball.

The main advantages of this approach are:

- Transparency: the full distribution process is now fully accessible on
  Gitlab, from the source, through the build (including all the logs)
  and up to the final tarball. Even the checksums are generated by the
  CI, making it easy to recognize if different tarballs were published
  on the download website or mirrors. This makes for a much safer and
  trustworthy publication process.

- Less bus factor: we don't rely as much on a single person to take care
  of the whole process.

- More automatization: a release still has to be prepared and verified
  manually (it always will), but at least the whole tarball creation is
  now automated. The next step will be to automate also the publication
  on the download server.
This commit is contained in:
Jehan 2021-04-29 20:10:57 +02:00
parent 0645bf6f0f
commit 8d8c77730c
1 changed files with 50 additions and 17 deletions

View File

@ -75,6 +75,16 @@
planned date, update the "date" in the <release> tag of the appdata planned date, update the "date" in the <release> tag of the appdata
in: desktop/org.gimp.GIMP.appdata.xml.in in: desktop/org.gimp.GIMP.appdata.xml.in
( ) Check that our Continuous Integration builds are working fine for
the branch we plan to release: https://gitlab.gnome.org/GNOME/gimp/-/pipelines
Check that all jobs are successful because we should not release
with code known not to build in some conditions.
Note: some jobs rely on our meson build which has race condition
bugs so if some jobs fail, you should check if it is because of
bugs in the code or issues with meson or the CI infrastructure.
When unsure, it is better to trigger a job retry.
( ) Bump the version number to an even micro in configure.ac and ( ) Bump the version number to an even micro in configure.ac and
commit this change. It should be the version number of the commit this change. It should be the version number of the
release you are about to make. Releases always have even micro release you are about to make. Releases always have even micro
@ -87,7 +97,20 @@
( ) Bump the version in project() of meson.build identically as the ( ) Bump the version in project() of meson.build identically as the
version set in configure.ac. version set in configure.ac.
( ) Make dist tarballs: ( ) Commit the version bumps only and push these. Since there was no
code change since the last CI check, the CI should build fine once
again. Make sure of it.
( ) Make dist tarballs [DEPRECATED - taken from CI jobs]
🛈 These instructions are left for information purpose and so that
maintainers remember the way to test locally that distribution
tarball creation works fine. Nevertheless this is already what the
continuous integration does (jobs `gimp-distcheck-debian` and
`sources` in particular) from a clean slate. So as we check the CI
success, this step is now unecessary. Moreover we should now always
publish the tarball prepared by the CI, not by a local build, for
purpose of process transparency.
[ ] Start with a checkout of the GIMP tree. Make sure the [ ] Start with a checkout of the GIMP tree. Make sure the
checkout is up to date, clean from uncommitted changes. checkout is up to date, clean from uncommitted changes.
@ -117,35 +140,34 @@
[ ] If 'make distcheck' passed and created tarballs, go to the [ ] If 'make distcheck' passed and created tarballs, go to the
next item. next item.
( ) A successful run of the 'make distcheck' would create the final [ ] A successful run of the 'make distcheck' would create the final
dist tarballs. It will include a ChangeLog generated from the dist tarballs. It will include a ChangeLog generated from the
'git log'. Note that we don't bother with any release commit, 'git log'. Note that we don't bother with any release commit,
that's what tags are for (see below). that's what tags are for (see below).
( ) Tag the release (don't forget to push the tag) ( ) Tag the release (don't forget to push the tag)
git tag -s GIMP_2_x_y git tag -s GIMP_2_x_y
git push origin GIMP_2_x_y git push origin GIMP_2_x_y
TODO: determine what should be the policy regarding tag signing. All release tags are signed in order for the authenticity and
origin of the release to be publicly verified.
( ) Bump the version number (past the tagged version) in configure.ac ( ) Gitlab will run a new CI pipeline specifically for the tag (tag
to the next odd micro and commit this change. GIT versions always pipelines build less jobs, only the necessary ones to create the
have odd micro numbers. tarball). Once it is done, you will find a tarball, SHA256 and
SHA512 checksum files on the artifacts of the job `sources`. A
direct link, for instance for the GIMP_2_99_6 tag would be:
[ ] In configure.ac, modify gimp_micro_version accordingly. https://gitlab.gnome.org/GNOME/gimp/-/jobs/artifacts/GIMP_2_99_6/browse/?job=sources
[ ] In configure.ac, modify gimp_interface_age accordingly.
( ) Bump the version number in meson.build to the same value as in
configure.ac.
( ) Publish dist tarballs: ( ) Publish dist tarballs:
[ ] Use `sha256sum` and `sha512sum` to create checksums of the [ ] Use `sha256sum` and `sha512sum` to create checksums of the
tarball (tar.bz2). tarball (tar.bz2).
[ ] Upload the tarball (tar.bz2) to your home directory on [ ] Upload the 3 files (tar.bz2 tarball and 2 checksums) to
master.gnome.org. /gimp_ftp/incoming/ on master.gnome.org (do not upload to your
home first as it would mess up some SELinux flags).
[ ] Copy the tarball to its final destination in the download [ ] Copy the tarball to its final destination in the download
area (/gimp_ftp/pub/gimp/). Really use "cp" not "mv" or area (/gimp_ftp/pub/gimp/). Really use "cp" not "mv" or
@ -166,6 +188,17 @@
this group to correct mistakes and to update the this group to correct mistakes and to update the
0.0_LATEST-IS- file next time. 0.0_LATEST-IS- file next time.
( ) Bump the version number (past the tagged version) in configure.ac
to the next odd micro and commit this change. GIT versions always
have odd micro numbers.
[ ] In configure.ac, modify gimp_micro_version accordingly.
[ ] In configure.ac, modify gimp_interface_age accordingly.
( ) Bump the version number in meson.build to the same value as in
configure.ac.
( ) Add the next version milestone on GIMP's Gitlab: ( ) Add the next version milestone on GIMP's Gitlab:
https://gitlab.gnome.org/GNOME/gimp/-/milestones https://gitlab.gnome.org/GNOME/gimp/-/milestones