summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrode Nordahl <frode.nordahl@canonical.com>2022-07-14 17:55:41 +0200
committerIlya Maximets <i.maximets@ovn.org>2022-07-15 13:45:55 +0200
commitae262ddf229a05e8f400332cb6fbd31980f450f9 (patch)
tree81497bc1c3ad11dea50d50e29c82ca81340b6b79
parent9990322610f627118e20c54ad749caeb3e99358a (diff)
downloadopenvswitch-ae262ddf229a05e8f400332cb6fbd31980f450f9.tar.gz
ci: Separate job for debs, ensure built pkg is tested.
Use a separate GitHub Actions job for deb test so that we can control base image for package test. The CI deb package test code currently attempts to use `apt` to install local packages. That may not produce the expected result. Explicitly install the local packages with `dpkg` after installing dependencies from `apt` instead. Also enable test installation of ipsec deb package. Signed-off-by: Frode Nordahl <frode.nordahl@canonical.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
-rwxr-xr-x.ci/linux-build.sh21
-rw-r--r--.github/workflows/build-and-test.yml50
2 files changed, 53 insertions, 18 deletions
diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh
index 9963fb810..a8c437aaf 100755
--- a/.ci/linux-build.sh
+++ b/.ci/linux-build.sh
@@ -207,10 +207,23 @@ if [ "$DEB_PACKAGE" ]; then
mk-build-deps --install --root-cmd sudo --remove debian/control
dpkg-checkbuilddeps
DEB_BUILD_OPTIONS='parallel=4 nocheck' fakeroot debian/rules binary
- # Not trying to install ipsec package as there are issues with system-wide
- # installed python3-openvswitch package and the pyenv used by Travis.
- packages=$(ls $(pwd)/../*.deb | grep -v ipsec)
- sudo apt install ${packages}
+ packages=$(ls $(pwd)/../*.deb)
+ deps=""
+ for pkg in $packages; do
+ _ifs=$IFS
+ IFS=","
+ for dep in $(dpkg-deb -f $pkg Depends); do
+ dep_name=$(echo "$dep"|awk '{print$1}')
+ # Don't install internal package inter-dependencies from apt
+ echo $dep_name | grep -q openvswitch && continue
+ deps+=" $dep_name"
+ done
+ IFS=$_ifs
+ done
+ # install package dependencies from apt
+ echo $deps | xargs sudo apt -y install
+ # install the locally built openvswitch packages
+ sudo dpkg -i $packages
exit 0
fi
diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml
index ec34a9b0d..90fe17377 100644
--- a/.github/workflows/build-and-test.yml
+++ b/.github/workflows/build-and-test.yml
@@ -9,13 +9,10 @@ jobs:
automake libtool gcc bc libjemalloc1 libjemalloc-dev \
libssl-dev llvm-dev libelf-dev libnuma-dev libpcap-dev \
ninja-build selinux-policy-dev
- deb_dependencies: |
- linux-headers-$(uname -r) build-essential fakeroot devscripts equivs
AFXDP: ${{ matrix.afxdp }}
ASAN: ${{ matrix.asan }}
UBSAN: ${{ matrix.ubsan }}
CC: ${{ matrix.compiler }}
- DEB_PACKAGE: ${{ matrix.deb_package }}
DPDK: ${{ matrix.dpdk }}
DPDK_SHARED: ${{ matrix.dpdk_shared }}
KERNEL: ${{ matrix.kernel }}
@@ -148,11 +145,7 @@ jobs:
- name: update APT cache
run: sudo apt update || true
- name: install common dependencies
- if: matrix.deb_package == ''
run: sudo apt install -y ${{ env.dependencies }}
- - name: install dependencies for debian packages
- if: matrix.deb_package != ''
- run: sudo apt install -y ${{ env.deb_dependencies }}
- name: install libunbound libunwind
if: matrix.m32 == ''
run: sudo apt install -y libunbound-dev libunwind-dev
@@ -163,13 +156,6 @@ jobs:
- name: build
run: ./.ci/linux-build.sh
- - name: upload deb packages
- if: matrix.deb_package != ''
- uses: actions/upload-artifact@v2
- with:
- name: deb-packages
- path: '/home/runner/work/ovs/*.deb'
-
- name: copy logs on failure
if: failure() || cancelled()
run: |
@@ -224,3 +210,39 @@ jobs:
with:
name: logs-osx-clang---disable-ssl
path: config.log
+
+ build-linux-deb:
+ env:
+ deb_dependencies: |
+ linux-headers-$(uname -r) build-essential fakeroot devscripts equivs
+ DEB_PACKAGE: yes
+
+ name: linux deb
+ runs-on: ubuntu-22.04
+ timeout-minutes: 30
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: update PATH
+ run: |
+ echo "$HOME/bin" >> $GITHUB_PATH
+ echo "$HOME/.local/bin" >> $GITHUB_PATH
+
+ - name: update APT cache
+ run: sudo apt update || true
+ - name: install dependencies for debian packages
+ run: sudo apt install -y ${{ env.deb_dependencies }}
+
+ - name: prepare
+ run: ./.ci/linux-prepare.sh
+
+ - name: build
+ run: ./.ci/linux-build.sh
+
+ - name: upload deb packages
+ uses: actions/upload-artifact@v2
+ with:
+ name: deb-packages
+ path: '/home/runner/work/ovs/*.deb'