similarity index 100%
rename from .travis/linux-build.sh
rename to .ci/linux-build.sh
similarity index 72%
rename from .travis/linux-prepare.sh
rename to .ci/linux-prepare.sh
@@ -25,10 +25,15 @@ pip3 install --user --upgrade docutils
if [ "$M32" ]; then
# Installing 32-bit libraries.
- # 32-bit and 64-bit libunwind can not be installed at the same time.
- # This will remove the 64-bit libunwind and install 32-bit version.
- sudo apt-get install -y \
- libunwind-dev:i386 libunbound-dev:i386 gcc-multilib
+ pkgs="gcc-multilib"
+ if [ -z "$GITHUB_WORKFLOW" ]; then
+ # 32-bit and 64-bit libunwind can not be installed at the same time.
+ # This will remove the 64-bit libunwind and install 32-bit version.
+ # GitHub Actions doesn't have 32-bit versions of these libs.
+ pkgs=$pkgs" libunwind-dev:i386 libunbound-dev:i386"
+ fi
+
+ sudo apt-get install -y $pkgs
fi
# IPv6 is supported by kernel but disabled in TravisCI images:
similarity index 100%
rename from .travis/osx-build.sh
rename to .ci/osx-build.sh
similarity index 100%
rename from .travis/osx-prepare.sh
rename to .ci/osx-prepare.sh
new file mode 100644
@@ -0,0 +1,194 @@
+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
+ deb_dependencies: |
+ linux-headers-$(uname -r) build-essential fakeroot devscripts equivs
+ AFXDP: ${{ matrix.afxdp }}
+ CC: ${{ matrix.compiler }}
+ DEB_PACKAGE: ${{ matrix.deb_package }}
+ DPDK: ${{ matrix.dpdk }}
+ DPDK_SHARED: ${{ matrix.dpdk_shared }}
+ KERNEL: ${{ matrix.kernel }}
+ KERNEL_LIST: ${{ matrix.kernel_list }}
+ LIBS: ${{ matrix.libs }}
+ M32: ${{ matrix.m32 }}
+ OPTS: ${{ matrix.opts }}
+ TESTSUITE: ${{ matrix.testsuite }}
+
+ name: linux ${{ join(matrix.*, ' ') }}
+ runs-on: ubuntu-18.04
+ timeout-minutes: 30
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - compiler: gcc
+ opts: --disable-ssl
+ - compiler: clang
+ opts: --disable-ssl
+
+ - compiler: gcc
+ testsuite: test
+ kernel: 3.16
+ - compiler: clang
+ testsuite: test
+ kernel: 3.16
+
+ - compiler: gcc
+ testsuite: test
+ opts: --enable-shared
+ - compiler: clang
+ testsuite: test
+ opts: --enable-shared
+
+ - compiler: gcc
+ testsuite: test
+ dpdk: dpdk
+ - compiler: clang
+ testsuite: test
+ dpdk: dpdk
+
+ - compiler: gcc
+ testsuite: test
+ libs: -ljemalloc
+ - compiler: clang
+ testsuite: test
+ libs: -ljemalloc
+
+ - compiler: gcc
+ kernel_list: 5.8 5.5 5.4 4.19
+ - compiler: clang
+ kernel_list: 5.8 5.5 5.4 4.19
+
+ - compiler: gcc
+ kernel_list: 4.14 4.9 4.4 3.16
+ - compiler: clang
+ kernel_list: 4.14 4.9 4.4 3.16
+
+ - compiler: gcc
+ afxdp: afxdp
+ kernel: 5.3
+ - compiler: clang
+ afxdp: afxdp
+ kernel: 5.3
+
+ - compiler: gcc
+ dpdk: dpdk
+ opts: --enable-shared
+ - compiler: clang
+ dpdk: dpdk
+ opts: --enable-shared
+
+ - compiler: gcc
+ dpdk_shared: dpdk-shared
+ - compiler: clang
+ dpdk_shared: dpdk-shared
+
+ - compiler: gcc
+ dpdk_shared: dpdk-shared
+ opts: --enable-shared
+ - compiler: clang
+ dpdk_shared: dpdk-shared
+ opts: --enable-shared
+
+ - compiler: gcc
+ m32: m32
+ opts: --disable-ssl
+
+ - compiler: gcc
+ deb_package: deb
+
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - name: create ci signature file for the dpdk cache key
+ if: matrix.dpdk != '' || matrix.dpdk_shared != ''
+ # This will collect most of DPDK related lines, so hash will be different
+ # if something changed in a way we're building DPDK including DPDK_VER.
+ # This also allows us to use cache from any branch as long as version
+ # and a way we're building DPDK stays the same.
+ run: |
+ grep -irE 'RTE_|DPDK|meson|ninja' -r .ci/ > dpdk-ci-signature
+ cat dpdk-ci-signature
+
+ - name: cache
+ if: matrix.dpdk != '' || matrix.dpdk_shared != ''
+ uses: actions/cache@v2
+ env:
+ matrix_key: ${{ matrix.dpdk }}${{ matrix.dpdk_shared }}
+ ci_key: ${{ hashFiles('dpdk-ci-signature') }}
+ with:
+ path: dpdk-dir
+ key: ${{ env.matrix_key }}-${{ env.ci_key }}
+
+ - 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
+
+ - name: prepare
+ run: ./.ci/linux-prepare.sh
+
+ - name: build
+ run: PATH="$PATH:$HOME/bin" ./.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: upload logs on failure
+ if: failure()
+ uses: actions/upload-artifact@v2
+ with:
+ name: logs-linux-${{ join(matrix.*, '-') }}
+ path: |
+ config.log
+ '*/_build/sub/tests/testsuite.log'
+ '*/_build/sub/tests/testsuite.dir'
+
+ build-osx:
+ env:
+ CC: clang
+ OPTS: --disable-ssl
+
+ name: osx clang --disable-ssl
+ runs-on: macos-latest
+ timeout-minutes: 30
+
+ 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
@@ -28,7 +28,7 @@ addons:
- libunbound-dev
- libunwind-dev
-before_install: ./.travis/${TRAVIS_OS_NAME}-prepare.sh
+before_install: ./.ci/${TRAVIS_OS_NAME}-prepare.sh
before_script: export PATH=$PATH:$HOME/bin
@@ -76,7 +76,7 @@ matrix:
- devscripts
- equivs
-script: ./.travis/${TRAVIS_OS_NAME}-build.sh $OPTS
+script: ./.ci/${TRAVIS_OS_NAME}-build.sh $OPTS
notifications:
email:
@@ -68,11 +68,10 @@ Testing is also important:
feature. A bug fix patch should preferably add a test that would
fail if the bug recurs.
-If you are using GitHub, then you may utilize the travis-ci.org CI build system
-by linking your GitHub repository to it. This will run some of the above tests
-automatically when you push changes to your repository. See the "Continuous
-Integration with Travis-CI" in :doc:`/topics/testing` for details on how to set
-it up.
+If you are using GitHub, then you may utilize the travis-ci.org and the GitHub
+Actions CI build systems. They will run some of the above tests automatically
+when you push changes to your repository. See the "Continuous Integration with
+Travis-CI" in :doc:`/topics/testing` for details on how to set it up.
Email Subject
-------------
@@ -76,12 +76,13 @@ EXTRA_DIST = \
MAINTAINERS.rst \
README.rst \
NOTICE \
+ .ci/linux-build.sh \
+ .ci/linux-prepare.sh \
+ .ci/osx-build.sh \
+ .ci/osx-prepare.sh \
.cirrus.yml \
+ .github/workflows/build-and-test.yml \
.travis.yml \
- .travis/linux-build.sh \
- .travis/linux-prepare.sh \
- .travis/osx-build.sh \
- .travis/osx-prepare.sh \
appveyor.yml \
boot.sh \
poc/builders/Vagrantfile \
@@ -25,6 +25,8 @@ Post-v2.14.0
"secondary", respectively, for OpenFlow connection roles.
* The term "slave" has been replaced by "member", for bonds, LACP, and
OpenFlow bundle actions.
+ - Support for GitHub Actions based continuous integration builds has been
+ added.
v2.14.0 - 17 Aug 2020
@@ -6,6 +6,8 @@
Open vSwitch
============
+.. image:: https://github.com/openvswitch/ovs/workflows/Build%20and%20Test/badge.svg
+ :target: https://github.com/openvswitch/ovs/actions
.. image:: https://travis-ci.org/openvswitch/ovs.png
:target: https://travis-ci.org/openvswitch/ovs
.. image:: https://ci.appveyor.com/api/projects/status/github/openvswitch/ovs?branch=master&svg=true&retina=true