ci: hook to GitHub Actions
authorDavid Marchand <david.marchand@redhat.com>
Fri, 4 Dec 2020 17:36:21 +0000 (18:36 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Mon, 14 Dec 2020 14:34:00 +0000 (15:34 +0100)
commit87009585e293d0f45d38343af323155c082f146a
tree295a9961e9d9d31f6e6b81a20deccda199b9d482
parent3745f64b4a3559ac817ca08e85108aa1f161c6fa
ci: hook to GitHub Actions

With the recent changes in terms of free access to the Travis CI, let's
offer an alternative with GitHub Actions.
Running jobs on ARM is not supported unless using external runners, so
this commit only adds builds for x86_64 and cross compiling for i386 and
aarch64.

Differences with the Travis CI integration:
- Error logs are not dumped to the console when something goes wrong.
  Instead, they are gathered in a "catch-all" step and attached as
  artifacts.
- A cache entry is stored once and for all, but if no cache is found you
  can inherit from the default branch cache. The cache is 5GB large, for
  the whole git repository.
- The maximum retention of logs and artifacts is 3 months.
- /home/runner is world writable, so a workaround has been added for
  starting dpdk processes.
- Ilya, working on OVS GHA support, noticed that jobs can run with
  processors that don't have the same capabilities. For DPDK, this
  impacts the ccache content since everything was built with
  -march=native so far, and we will end up with binaries that can't run
  in a later build. The problem has not been seen in Travis CI (?) but
  it is safer to use a fixed "-Dmachine=default" in any case.
- Scheduling jobs is part of the configuration and takes the form of a
  crontab. A build is scheduled every Monday at 0:00 (UTC) to provide a
  default ccache for the week (useful for the ovsrobot).

Signed-off-by: David Marchand <david.marchand@redhat.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Aaron Conole <aconole@redhat.com>
.ci/linux-build.sh
.github/workflows/build.yml [new file with mode: 0644]
.travis.yml
MAINTAINERS