On Wed, Dec 2, 2020 at 12:44 PM Numan Siddique <[email protected]> wrote: > > On Wed, Dec 2, 2020 at 6:26 AM Mark Michelson <[email protected]> wrote: > > > > Acked-by: Mark Michelson <[email protected]> > > > > There are definitely some enhancements/changes this could use, but I > > think this makes for a perfectly fine first effort. With this, github > > will build and run tests, failures are detected properly, and you can > > find the details of the failures by navigating to the github actions. > > > > I think the biggest immediate change that should be made as a second > > step is to upload the `make distcheck` output as an artifact. But > > there's no reason that it needs to be made immediately as part of this > > change. > > > > Thanks for the review. I applied this patch to master and to all the > branches - 20.09, 20.06 and 20.03.
Forgot to mention that while backporting I modified the linux-build.sh to checkout OVS v2.14.0 tag as OVN branches don't compile successfully with the present master due to some changes in the ofpact structs. Thanks Numan > > Agree. If you're aware of about the artifacts, please consider > submitting the patch to address it. > > I will work on having this PR - https://github.com/ovn-org/ovn/pull/61 > to work successfully. > > Thanks > Numan > > > > On 11/27/20 2:29 AM, [email protected] wrote: > > > From: Numan Siddique <[email protected]> > > > > > > This patch adds basic github actions to build and run OVN tests. > > > The test matrix is a slightly reduced version of current travis matrix. > > > We don't need to run OVN with multiple kernel versions. > > > > > > This patch also removes the .travis.yml file as there is little value > > > in running the same tests in travis CI, given that travis-ci.org will > > > be turned into read-only mode. More information on this can be found > > > here [1]. > > > > > > We can further enhance the github actions to run ovn-kubernetes > > > end-to-end tests. > > > > > > Thanks to Ilya, much of the github actions code is taken from Ilya's OVS > > > github action patch [2]. > > > > > > [1] - https://github.com/numansiddique/ovn/runs/1457594086 > > > [2] - > > > https://patchwork.ozlabs.org/project/openvswitch/patch/[email protected]/ > > > Co-authored-by: Ilya Maximets <[email protected]> > > > Signed-off-by: Ilya Maximets <[email protected]> > > > Signed-off-by: Numan Siddique <[email protected]> > > > --- > > > > > > Here is how it looks like: > > > https://github.com/numansiddique/ovn/runs/1462480259 > > > > > > Antonio Ojea <[email protected]> has submitted a PR - > > > https://github.com/ovn-org/ovn/pull/61 > > > to run ovn-k8s end-to-end tests using github actions a while back. That PR > > > needs some polishing. I will be submitting that for review once it is > > > ready. > > > > > > > > > v2 -> v3 > > > --- > > > * Addressed review comments from Ilya > > > - for the m32 build > > > - added the tasks to collect logs. > > > > > > v1 -> v2 > > > ---- > > > * Addressed review comments from Ilya. > > > > > > {.travis => .ci}/linux-build.sh | 18 ++--- > > > {.travis => .ci}/linux-prepare.sh | 0 > > > {.travis => .ci}/osx-build.sh | 0 > > > {.travis => .ci}/osx-prepare.sh | 0 > > > .github/workflows/test.yml | 113 ++++++++++++++++++++++++++++++ > > > .travis.yml | 47 ------------- > > > Makefile.am | 10 +-- > > > 7 files changed, 128 insertions(+), 60 deletions(-) > > > rename {.travis => .ci}/linux-build.sh (74%) > > > rename {.travis => .ci}/linux-prepare.sh (100%) > > > rename {.travis => .ci}/osx-build.sh (100%) > > > rename {.travis => .ci}/osx-prepare.sh (100%) > > > create mode 100644 .github/workflows/test.yml > > > delete mode 100644 .travis.yml > > > > > > diff --git a/.travis/linux-build.sh b/.ci/linux-build.sh > > > similarity index 74% > > > rename from .travis/linux-build.sh > > > rename to .ci/linux-build.sh > > > index a8a561dc4e..0e9f87fa8b 100755 > > > --- a/.travis/linux-build.sh > > > +++ b/.ci/linux-build.sh > > > @@ -3,10 +3,9 @@ > > > set -o errexit > > > set -x > > > > > > -CFLAGS="-Werror" > > > +CFLAGS="" > > > SPARSE_FLAGS="" > > > -EXTRA_OPTS="" > > > -TARGET="x86_64-native-linuxapp-gcc" > > > +EXTRA_OPTS="--enable-Werror" > > > > > > function configure_ovs() > > > { > > > @@ -24,16 +23,19 @@ function configure_ovn() > > > { cat config.log; exit 1; } > > > } > > > > > > -OPTS="$EXTRA_OPTS $*" > > > +save_OPTS="${OPTS} $*" > > > +OPTS="${EXTRA_OPTS} ${save_OPTS}" > > > > > > if [ "$CC" = "clang" ]; then > > > export OVS_CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument" > > > -elif [[ $BUILD_ENV =~ "-m32" ]]; then > > > - # Disable sparse for 32bit builds on 64bit machine > > > - export OVS_CFLAGS="$CFLAGS $BUILD_ENV" > > > +elif [ "$M32" ]; then > > > + # Not using sparse for 32bit builds on 64bit machine. > > > + # Adding m32 flag directly to CC to avoid any posiible issues with > > > API/ABI > > > + # difference on 'configure' and 'make' stages. > > > + export CC="$CC -m32" > > > else > > > OPTS="$OPTS --enable-sparse" > > > - export OVS_CFLAGS="$CFLAGS $BUILD_ENV $SPARSE_FLAGS" > > > + export OVS_CFLAGS="$CFLAGS $SPARSE_FLAGS" > > > fi > > > > > > if [ "$TESTSUITE" ]; then > > > diff --git a/.travis/linux-prepare.sh b/.ci/linux-prepare.sh > > > similarity index 100% > > > rename from .travis/linux-prepare.sh > > > rename to .ci/linux-prepare.sh > > > diff --git a/.travis/osx-build.sh b/.ci/osx-build.sh > > > similarity index 100% > > > rename from .travis/osx-build.sh > > > rename to .ci/osx-build.sh > > > diff --git a/.travis/osx-prepare.sh b/.ci/osx-prepare.sh > > > similarity index 100% > > > rename from .travis/osx-prepare.sh > > > rename to .ci/osx-prepare.sh > > > diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml > > > new file mode 100644 > > > index 0000000000..7be75ca36c > > > --- /dev/null > > > +++ b/.github/workflows/test.yml > > > @@ -0,0 +1,113 @@ > > > +name: Build and Test > > > + > > > +on: [push, pull_request] > > > + > > > +jobs: > > > + build-linux: > > > + env: > > > + dependencies: | > > > + automake libtool gcc bc libjemalloc1 libjemalloc-dev \ > > > + libssl-dev llvm-dev libelf-dev libnuma-dev libpcap-dev \ > > > + python3-openssl python3-pip python3-sphinx \ > > > + selinux-policy-dev > > > + m32_dependecies: gcc-multilib > > > + CC: ${{ matrix.compiler }} > > > + LIBS: ${{ matrix.libs }} > > > + M32: ${{ matrix.m32 }} > > > + OPTS: ${{ matrix.opts }} > > > + TESTSUITE: ${{ matrix.testsuite }} > > > + > > > + name: linux ${{ join(matrix.*, ' ') }} > > > + runs-on: ubuntu-18.04 > > > + > > > + strategy: > > > + fail-fast: false > > > + matrix: > > > + include: > > > + - compiler: gcc > > > + opts: --disable-ssl > > > + - compiler: clang > > > + opts: --disable-ssl > > > + > > > + - compiler: gcc > > > + testsuite: test > > > + - compiler: clang > > > + testsuite: test > > > + > > > + - compiler: gcc > > > + testsuite: test > > > + libs: -ljemalloc > > > + - compiler: clang > > > + testsuite: test > > > + libs: -ljemalloc > > > + > > > + - compiler: gcc > > > + m32: m32 > > > + opts: --disable-ssl > > > + > > > + steps: > > > + - name: checkout > > > + uses: actions/checkout@v2 > > > + > > > + - name: install required dependencies > > > + run: sudo apt install -y ${{ env.dependencies }} > > > + > > > + - name: install libunbound libunwind > > > + if: matrix.m32 == '' > > > + run: sudo apt install -y libunbound-dev libunwind-dev > > > + > > > + - name: install 32-bit dependencies > > > + if: matrix.m32 != '' > > > + run: sudo apt install -y ${{ env.m32_dependecies }} > > > + > > > + - name: prepare > > > + run: ./.ci/linux-prepare.sh > > > + > > > + - name: build > > > + run: PATH="$PATH:$HOME/bin" ./.ci/linux-build.sh > > > + > > > + - name: copy logs on failure > > > + if: failure() || cancelled() > > > + run: | > > > + # upload-artifact@v2 throws exceptions if it tries to upload > > > socket > > > + # files and we could have some socket files in testsuite.dir. > > > + # Also, upload-artifact@v2 doesn't work well enough with > > > wildcards. > > > + # So, we're just archiving everything here to avoid any issues. > > > + mkdir logs > > > + cp config.log ./logs/ > > > + cp -r ./*/_build/sub/tests/testsuite.* ./logs/ || true > > > + tar -czvf logs.tgz logs/ > > > + > > > + - name: upload logs on failure > > > + if: failure() || cancelled() > > > + uses: actions/upload-artifact@v2 > > > + with: > > > + name: logs-linux-${{ join(matrix.*, '-') }} > > > + path: logs.tgz > > > + > > > + build-osx: > > > + env: > > > + CC: clang > > > + OPTS: --disable-ssl > > > + > > > + name: osx clang --disable-ssl > > > + runs-on: macos-latest > > > + > > > + strategy: > > > + fail-fast: false > > > + > > > + steps: > > > + - name: checkout > > > + uses: actions/checkout@v2 > > > + - name: install dependencies > > > + run: brew install automake libtool > > > + - name: prepare > > > + run: ./.ci/osx-prepare.sh > > > + - name: build > > > + run: PATH="$PATH:$HOME/bin" ./.ci/osx-build.sh > > > + - name: upload logs on failure > > > + if: failure() > > > + uses: actions/upload-artifact@v2 > > > + with: > > > + name: logs-osx-clang---disable-ssl > > > + path: config.log > > > diff --git a/.travis.yml b/.travis.yml > > > deleted file mode 100644 > > > index cd853fddd9..0000000000 > > > --- a/.travis.yml > > > +++ /dev/null > > > @@ -1,47 +0,0 @@ > > > -language: c > > > -compiler: > > > - - gcc > > > - - clang > > > - > > > -os: > > > - - linux > > > - > > > -addons: > > > - apt: > > > - packages: > > > - - bc > > > - - gcc-multilib > > > - - libssl-dev > > > - - llvm-dev > > > - - libjemalloc1 > > > - - libjemalloc-dev > > > - - libnuma-dev > > > - - python-sphinx > > > - - libelf-dev > > > - - selinux-policy-dev > > > - - libunbound-dev > > > - - libunbound-dev:i386 > > > - > > > -before_install: ./.travis/${TRAVIS_OS_NAME}-prepare.sh > > > - > > > -before_script: export PATH=$PATH:$HOME/bin > > > - > > > -env: > > > - - OPTS="--disable-ssl" > > > - - TESTSUITE=1 KERNEL=4.18.20 > > > - - TESTSUITE=1 OPTS="--enable-shared" > > > - - BUILD_ENV="-m32" OPTS="--disable-ssl" > > > - - TESTSUITE=1 LIBS=-ljemalloc > > > - > > > -matrix: > > > - include: > > > - - os: osx > > > - compiler: clang > > > - env: OPTS="--disable-ssl" > > > - > > > -script: ./.travis/${TRAVIS_OS_NAME}-build.sh $OPTS > > > - > > > -notifications: > > > - email: > > > - recipients: > > > - - [email protected] > > > diff --git a/Makefile.am b/Makefile.am > > > index 221ca61be7..7ce3d27e46 100644 > > > --- a/Makefile.am > > > +++ b/Makefile.am > > > @@ -84,11 +84,11 @@ EXTRA_DIST = \ > > > README.rst \ > > > NOTICE \ > > > .cirrus.yml \ > > > - .travis.yml \ > > > - .travis/linux-build.sh \ > > > - .travis/linux-prepare.sh \ > > > - .travis/osx-build.sh \ > > > - .travis/osx-prepare.sh \ > > > + .ci/linux-build.sh \ > > > + .ci/linux-prepare.sh \ > > > + .ci/osx-build.sh \ > > > + .ci/osx-prepare.sh \ > > > + .github/workflows/test.yml \ > > > boot.sh \ > > > $(MAN_FRAGMENTS) \ > > > $(MAN_ROOTS) \ > > > > > > > _______________________________________________ > > dev mailing list > > [email protected] > > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
