-
-
Notifications
You must be signed in to change notification settings - Fork 463
Description
I wonder, if we could describe or clarify the releasing process of YaCy, to make the steps reproducible and understandable, ideally with command examples.
I understand that there is a lot of work with the releasing process for @Orbiter, and I hope the description would help to ease that or to find help from us others.
Ideally, releasing.md
, describing the process would be present in dev-docs, with this discussion serving as a inception of that.
There is also a lot of user calls for releasing in Github Issues, I tried to tag them all:
releasing
Web
Latest version of YaCy published in "Download" section for Windows is 1.924, latest version for Mac is 1.930. That's IMHO the reason, why 28% of instances use old 1.924 and 15% the 1.930, according to the yacystats:
breakout by minor versions:
https://yacystats.de/d/edquz3nqqr11cc/yacystats-de-dashboard?var-Interval=$__auto&orgId=1&from=now-7d&to=now&timezone=browser&var-Peers=$__all&refresh=5m&viewPanel=panel-22
Linux
Latest Linux release linked from "Download" section is 1.930 too, but there is also 1.940 build present (and not linked) at downloads.yacy.net: https://download.yacy.net/yacy_v1.940_202405270005_70454654f.tar.gz
Is that signed? How to find that and check the signature?
Should the link for Linux lead to newer version?
Auto update feed
There are two main kinds of releases used in YaCy's in-built update feature:
- signed (by @Orbiter)
- and unsigned (auto-built by github?).
If I understand that right, the updates are platform independent since it's java and the only thing platform-specific packages is neccessary for is the installation. (Would java version change break that, for example for Windows user?)
Sources are described in defaults/yacy.network.freeworld.unit
as download.yacy.net and release.yacy.net. Is the difference between them, that the earlier are signed and the latter are latest/developer/unsigned build?
At release.yacy.net, the latest build is 2024-12-02. How the releases are build, by hand, or is that a github's compilation? How they're updated? Is that so that the releasing of latest builds could be automated by a script?
In a case that someone wants to use the latest build, the only option is to build by oneself now.
I suppose that from some reason (privacy/trust?) we don't want releases from github directly, since the line:
# network.unit.update.location2 = https://github.com/yacy/yacy_search_server/releases
is commented out.
Docker
I personally don't understand Docker at all.
From what I see, Docker images are published at dockerhub:
https://hub.docker.com/r/yacy/yacy_search_server/
for architectures: linux/amd64
, linux/arm64/v8
(11 months old) and linux/arm
(4 years old -- and issue with patch)
How the docker images are built and published? By hand? How? What's the process?
It seems that building arm image is complicated (@Orbiter using raspi), could that be cross-compiled? Does anyone have experience with that?
- effort to do automatic multiarch builds by @MisterX2000: Automate Docker Build Process with Multiarch Support (and GitHub Release action) #698 (draft)
Windows
Latest Windows release is 1.924.
@smokingwheels did some effort in that direction, with @thkoch2001 involved. From what I understood, the problem is in using non-free java runtime and the obsolete NSIS packaging system. Does anyone know some viable alternative to do that?
Mac
Latest macos release is 1.930. How is that built, what is the process?
Not sure, but that seems that macos releasing is stuck on compilation system decision ant/gradle/maven and that macos release was dependent on gradle before? Is that right?
Debian/distro packages
There used to be an official Debian package at debian.yacy.net, but is not any more (#681) (althought referenced from the old documentation, transfered from the old wiki. May act as a linux distribution packaging inspiration).
@jason1987d offered to create a package for Linux, for that he needs to tag the releases (since packages got to refer to a tag rather than a github commit). That costs us nothing and would ease the packaging process done independently by other people, or various distributions of linux/bsd, packaging systems etc.
I identified the commits where the version changed, but since I have no rights in the repository, I cannot tag them. @Orbiter, could you tag these please, so we don't block such volunteer effort?