[PATCH] ci: add Fedora 35 container in GHA
David Marchand
david.marchand at redhat.com
Tue Nov 16 13:31:02 CET 2021
Build DPDK with Fedora 35 containers.
Differences with the Ubuntu GHA vm images:
- tasks are run as root in containers, no need for sudo,
- compiler must be explicitly installed: clang is not in container images,
- GHA artifacts can't contain a ':' in their name, and must be filtered,
Signed-off-by: David Marchand <david.marchand at redhat.com>
---
.ci/linux-build.sh | 3 ++
.ci/linux-setup.sh | 3 ++
.github/workflows/build.yml | 67 +++++++++++++++++++++++++++++++++++--
3 files changed, 71 insertions(+), 2 deletions(-)
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index ef0bd099be..e34a74ab64 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -1,5 +1,8 @@
#!/bin/sh -xe
+# Builds are run as root in containers, no need for sudo
+[ "$(id -u)" != '0' ] || alias sudo=
+
on_error() {
if [ $? = 0 ]; then
exit
diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh
index ca35b4b38d..f5ef6b1b98 100755
--- a/.ci/linux-setup.sh
+++ b/.ci/linux-setup.sh
@@ -1,5 +1,8 @@
#!/bin/sh -xe
+# Builds are run as root in containers, no need for sudo
+[ "$(id -u)" != '0' ] || alias sudo=
+
# need to install as 'root' since some of the unit tests won't run without it
sudo python3 -m pip install --upgrade 'meson==0.49.2'
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 4151cafee7..8429ffb721 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -10,7 +10,7 @@ defaults:
shell: bash --noprofile --norc -exo pipefail {0}
jobs:
- build:
+ ubuntu-vms:
name: ${{ join(matrix.config.*, '-') }}
runs-on: ${{ matrix.config.os }}
env:
@@ -140,7 +140,70 @@ jobs:
with:
name: meson-logs-${{ join(matrix.config.*, '-') }}
path: |
+ build/.ninja_log
+ build/gdb.log
+ build/meson-logs/meson-log.txt
build/meson-logs/testlog.txt
+
+ rpm-containers:
+ name: ${{ join(matrix.config.*, '-') }}
+ runs-on: ubuntu-latest
+ container:
+ image: ${{ matrix.config.image }}
+ env:
+ CC: ccache ${{ matrix.config.compiler }}
+ DEF_LIB: ${{ matrix.config.library }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ config:
+ - image: fedora:35
+ compiler: gcc
+ library: static
+ - image: fedora:35
+ compiler: gcc
+ library: shared
+ - image: fedora:35
+ compiler: clang
+ library: static
+ - image: fedora:35
+ compiler: clang
+ library: shared
+
+ steps:
+ - name: Checkout sources
+ uses: actions/checkout at v2
+ - name: Generate various keys
+ id: get_keys
+ run: |
+ echo -n '::set-output name=ccache::'
+ echo 'ccache-${{ matrix.config.image }}-${{ matrix.config.compiler }}-'$(date -u +%Y-w%W)
+ echo -n '::set-output name=logs::'
+ echo 'meson-logs-${{ join(matrix.config.*, '-') }}' | tr -d ':'
+ - name: Retrieve ccache cache
+ uses: actions/cache at v2
+ with:
+ path: ~/.ccache
+ key: ${{ steps.get_keys.outputs.ccache }}-${{ github.ref }}
+ restore-keys: |
+ ${{ steps.get_keys.outputs.ccache }}-refs/heads/main
+ - name: Update
+ run: dnf update -y || true
+ - name: Install packages
+ run: dnf install -y ccache numactl-devel python3-setuptools
+ python3-wheel python3-pip python3-pyelftools ninja-build
+ libatomic libbpf-devel libfdt-devel libpcap-devel openssl-devel
+ rdma-core-devel zlib-devel ${{ matrix.config.compiler }}
+ - name: Run setup
+ run: .ci/linux-setup.sh
+ - name: Build
+ run: .ci/linux-build.sh
+ - name: Upload logs on failure
+ if: failure()
+ uses: actions/upload-artifact at v2
+ with:
+ name: ${{ steps.get_keys.outputs.logs }}
+ path: |
build/.ninja_log
build/meson-logs/meson-log.txt
- build/gdb.log
--
2.23.0
More information about the dev
mailing list