вт, 6 дек. 2022 г. в 23:29, Willy Tarreau <[email protected]>:
> On Tue, Dec 06, 2022 at 06:59:30PM +0100, Tim Düsterhus wrote:
> > William,
> >
> > On 12/6/22 15:37, William Lallemand wrote:
> > > As I already mentionned, I don't really like the "latest" keyword for
> > > the OpenSSL version as it prevent us to have reproducible builds.
> > > It updates versions without warning, even major ones.
> >
> > I agree and also was not really happy with the 'latest' back when it was
> > introduced in the first place, but didn't care strongly enough to speak
> up
> > then.
>
> No problem, it's always easier to see what we've missed after it reaches
> its limits :-)
>
> > > What I suggest is to stop using "latest" for the "git push" CI, but
> > > using it only in a separate CI (once a day/week I don't know). And only
> > > use fixed version of the libraries on the CI so builds are not broken
> by
> > > external components. Because in my opinion the "git push" CI is to test
> > > our code, not the libraries.
> > >
> >
> > I don't even think such a weekly job is necessary [1]. Add an item to the
> > release checklist "check if any new SSL versions are available and add
> them
> > to matrix.py" and this should be fine, all SSL versions will then be
> updated
> > every 6 months and can also be updated on demand for important releases.
> > It's similar to how I simply rerun the Coccinelle patches from time to
> time
> > to fix whatever crept in since the last release.
>
> I'm seeing a slightly different approach here. We need to keep in mind
> that:
> - dev must be as forward-thinking as possible; as such, being aware
> that something is going to break soon is useful, particularly when
> it comes to forthcoming changes in third party dependencies. I.e.
> openssl 3 breakage was reported upfront and that was fortunate
> because a lot of changes were required to adapt to it, long before
> it was even released. So I don't know if the weekly job is the best
> option or not, but right now, watching form time to time how it goes
> with openssl 3.1-dev is useful. Here I'm speaking about a branch, it
> thus means that we're following what significant changes may bother
> us. It's purely integration testing, and we could decide that one
> major upgrade will not be the target for the current version because
> it requires too much work. But if we focus on such a target we should
> be as up-to-date as possible (no need to alarm on past breakage if
> the issue is since fixed). That's where following a -latest from a
> lib can be useful.
>
> - dev must also tell us if we're going to cause breakage on what we
> expect to support. E.g. once we see that 3.1-dev looks good and we
> decide to enable it, we'll also need to be able to quickly follow it,
> because until it's released, it may revert some changes or change its
> API and cause breakage. It's not like a stable version we can trust,
> and we need to know as well if we finally prefer to give up because
> going back-and-forth indicates a third-party dependency is not stable
> enough for example, or we could mention before the release that it's
> only experimental for now.
>
> - even when adopting a stable release, we'll suffer from bugs in third
> party dependencies just like we suffer from our own bugs. If OpenSSL
> 3.1.0 is released and we decide to follow its stable branch, maybe
> some tests will randomly fail from time to time. And we probably
> don't want to manually change its version every week to follow the
> first post-release fixes that we may need to stabilize the CI. In
> this case again, following the latest from a given branch would be
> useful, but it becomes less critical. Indeed, generally the most
> annoying issues should stabilize during the very first versions, and
> we don't need to care as much about updating the lib once the CI works
> fine again.
>
> - however, once we release a version, the most important is to make sure
> there are as few moving parts as possible. We should not change any
> dependency automatically for the CI. Triggering the build on the same
> release two weeks apart should execute the same tests, otherwise we
> can think that we broke something during a backport while it's not
> the case (that's in fact how we first noticed the problem).
>
> Thus I think that:
> - for dev, adopting the latest version of a chosen branch (released or
> dev) if possible would be desirable so that we're informed ASAP that
> the branch we're expecting to support is experiencing/causing some
> trouble ;
>
> - for dev, watching weekly or so the level of support of future versions
> that we have not yet planed to support would help prepare internals
> where needed ;
>
> - for stable, we'd just stick to the version that was in effect that the
> moment of the release (i.e. the version the tests were run on during
> dev).
>
> And that would make sense considering that a release is nothing more than
> freezing changes between dev and stable.
>
currently we invoke "matrix.py" as following
run: python3 .github/matrix.py "${{ github.event_name }}"
argument is ignored. we can change it to branch name here instead of
event_name or keep it and add branch.
based on branch name we can add "latest" (for dev)
what do you think ?
>
> I'm particularly conscious that there may be technical limitations for
> the -latest stuff and am not firmly sold on that. I'm just explaining
> some principles that should IMHO help us orient our choices when facing
> constraints (and I think that what we have right now is already quite
> good for -dev, though it could indeed possibly be improved).
>
> Just my two cents,
> Willy
>