On 6/29/22 15:52, Frode Nordahl wrote:
> 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 <[email protected]>
> ---
> .ci/linux-build.sh | 21 ++++++++--
> .github/workflows/build-and-test.yml | 62 +++++++++++++++++++++-------
> 2 files changed, 65 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..b36282ce5 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,51 @@ 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: ${{ matrix.deb_package }}
We should, porbbaly, just remove the 'matrix' from this job
and define env variables directly. i.e.:
DEB_PACKAGE: yes
> +
> + name: linux ${{ join(matrix.*, ' ') }}
And here just:
name: linux deb
Or something along these lines.
> + runs-on: ubuntu-22.04
> + timeout-minutes: 30
> +
> + strategy:
> + fail-fast: false
> + matrix:
> + include:
> + - compiler: gcc
> + deb_package: deb
The 'matrix' section can be just removed this way.
And we're not using the 'compiler' anywhere.
> +
> + steps:
> + - name: checkout
> + uses: actions/checkout@v2
> +
> + - name: update PATH
> + run: |
> + echo "$HOME/bin" >> $GITHUB_PATH
> + echo "$HOME/.local/bin" >> $GITHUB_PATH
> +
> + - name: set up python
> + uses: actions/setup-python@v2
> + with:
> + python-version: '3.9'
> +
> + - 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'
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev