Hi,

  I've been looking into github workflows primarily with an interest
in being able to run ci tests on some of the supported platforms on
changes to test a potential contribution isn't going to break them.

  In the case of windows everything is unbundled so glazier's process
is providing a couchdb package with spidermonkey+icu, otp+openssl,
where most of this is built from source.

 I've put put this process into a flow as several separate jobs that
deliver intermediate results using some workarounds from discussions
on slack, and could avoid many of the older workarounds in glazier by
using newer versions of the dependencies.

An example of the resulting release binaries are here:
https://github.com/lostnet/couchdb/releases/tag/msdeps12

And the workflow that is generating them is here:
https://github.com/lostnet/couchdb/blob/msdeps12/.github/workflows/mslegacy.yml

I think it would make sense to integrate this as a flow on the
couchdb-glazier repo to create an automated reference build and
binaries.

Issues:

1.  versioning for reliability and supply side attacks (as discussed on slack):

The runners get updated to new versions of things which break builds.
It is helpful though to be easily able to attempt to reproduce older
builds again to eliminate theories of the source of new build
failures.
Versions of things should also be locked down as should uses of third
party actions like erlfdb's flows do via git submodule pinning. There
is an inherent tradeoff that the install time of anything locked down
instead of from a runner's defaults adds to the runtime.

2. Using the flow for release binaries:

  Aside from (1) it would not be wise to use gpg keys on a cloud
service. Releases can be modified to add binaries so a couchdb member
could add signed binaries ideally using binaries built in the flow
itself if they can verify they were correctly built (or possibly
running the flow on their own clone or manually follow the flow
actions.)
  The versions of dependencies and compilers used in the build are
newer than past builds. Where possible it would be best to verify
these versions as older versions usually have more quirks for
automating the build on modern runners.

3. For CI:
  If glazier repo had these flows and releases, I would like to add
the ability to run the couchdbolddeps job as a manual action in the
couchdb repo similar to the ubuntu ci added with esr91pr.

4. There are still quite a few problems in the tests to investigate as
well as whether the resulting packages are valid (and whether
foundationdb is intended to be external or a bundled deliverable on
couch4?)

At Any rate, I would appreciate any thoughts on automating the windows builds.

Thanks,
Will Young

Reply via email to