Hi,
my projectS are never in the release state. Part of the release are
some manual steps, like updating the NEWS file and the metainfo.xml
files for the apps. I never push the changes to the git before I verify
these things work as they should.
The new steps, which will be in the handbook soon, as you said, I guess
will be along:
- locally update the NEWS file
- test the release (
make disttest
and the like)
- push the NEWS update to the git
- open a web page and click on some button
- enjoy your tea and newspapers read until the CI does what you already have done locally; hopefully in some not distant future
- switch back to the local command line
- tag the release with the proper (possibly signed) tag and name relevant to your project
- do post-release version bump
- possibly add the release info to the GitLab Releases page (that’s only for one project I work with)
You know, I’m a human, I do mistakes, in fact, I do a lot of mistakes.
The manual work needs to be verified before pushed to the git. The
duplicated work and the waiting for something I’ve already locally done
doesn’t sound like a good step forward. I doubt you can avoid the NEWS
updates, that needs human intervention.
How do I test the script does what it should do without actually doing
the release someone might want to use? If “clicking the button on the
web site” means also uploading to the download.gnome.org and notifying
by mail and all of that, then it’s nothing for testing, right? This is
not meson, thus your template (for meson) simply doesn’t work. Writing
something from scratch is a problem (remember, I do mistakes). I also
do not want some random person which passes around (accidentally or
not) pressing the button in the web UI. That should be done on purpose,
by the maintainers only; aka a controlled environment. After all, the
maintainers know the details of their projects.
I agree with Alice, the dependencies of the evolution-data-server,
evolution, evolution-ews and evolution-mapi are very tight, they
require exactly the same version as they are (or newer). That can be
tricky to achieve.
Speaking of the evolution-mapi, it requires OpenChange, which requires
samba. It does not have any real “make disttest”, but the “make dist”
is available only after the project is configured, thus the CI would
take ages to build the dependencies.
The evolution-etesync requires libetebase, which is Rust, which may
require Internet access. The libetebase is not part of the GNOME, it’s
hosted elsewhere.
I guess the dependencies will need some special CI/Docker image with
the dependencies preinstalled? Docker is not my friend, and updating
the images every few months is also something far behind my maintainer
abilities, at least yet.
Maybe a way to workaround the pain with those complicated cases would
be to rewrite the make dist
to a bash script? It may surely speed up
the tarball build time significantly and considering all the runtime
tests are finished locally anyway.
I understand that this is a step forward and works for simple cases,
but the life is not simple. I guess.
Bye,
Milan