CI: Use CI for snapshot builds
This commits adds a GitHub actions CI workflow file which builds all
targets every 24 hours. To do so it imitates most steps of the
buildbot.git[0] and uploads created binaries and kmods to a storage
server.
As the OpenWrt core developers clearly stated their interest in moving
away from GitHub and towards a self-hosted GitLab instance, this is
mostly intended as a proof of concept and to show the buildbot steps in
easier understandable fashion than looking through the buildbot script.
The script is easily adaptable to work with the GitLab CI, however as
GitHub currently offers more parallel builds, it was preferred.
Using a CI instead of buildbot for snapshot builds introduces multiple
advanced which are described below:
* The current setup is (mostly) handled and maintained by a single
person. Moving to a "in-repo" based CI configuration enables a bigger
audience to follow the setup and introduce fixes and improvements.
* Changes have to be applied very carefully or all builds may fail.
Using a CI allows to automatically test changes and deploy (build &
upload all ~50 targets/subtargets) only in on success.
* GitHub currently offers up to 60 parallel jobs for organizations.
That means 60 targets can be build in parallel, each taking about 90
minutes. This would greatly reduce current server load and allow more
resources for release building and thereby lower maintenance.
* The CI interface is (obviously) better integrated in the GitHub (and
GitLab) website and thereby allows developers to easier see what breaks,
instead of waiting for bug buildbot fail reports in IRC elsewhere.
* Worker setup and maintenance should ideally be easier. Both GitHub and
GitLab offer to host your own workers. While uninteresting for GitHub
due to the temporary (if at all) usage, GitLab workers build in defined
Docker containers and communicate with the main instance over HTTPS. No
SSH tunneling or similar features required. Due to the nature of Docker
containers the workspace cleaning is also drastically simplified.
Updating the build containers can be tested locally and then rolled out
do all workers at once, instead of maintaining multiple servers with
varying OS versions.
[0]: https://git.openwrt.org/?p=buildbot.git
Signed-off-by: Paul Spooren <mail@aparcar.org>