GitHub is a service used by developers to store repositories. GitHub provides service integrations that allow 3rd party services to access developer repositories and perform actions. One of these services is Travis-CI, a simple continuous integration platform.
This is a simple initial implementation of a travis build for the DPDK project. It doesn't require any changes from individual developers to enable, but will allow those developers who opt-in to GitHub and the travis service to get automatic builds for every push they make. Additionally, the travis service will send an email to the test-report list informing anyone interested in the automated build (including a result). Signed-off-by: Aaron Conole <acon...@redhat.com> Signed-off-by: Michael Santana <msant...@redhat.com> --- .ci/linux-build.sh | 34 +++++++++++++++++++++++++ .ci/linux-setup.sh | 3 +++ .travis.yml | 39 +++++++++++++++++++++++++++++ MAINTAINERS | 6 +++++ doc/guides/contributing/patches.rst | 3 +++ 5 files changed, 85 insertions(+) create mode 100755 .ci/linux-build.sh create mode 100755 .ci/linux-setup.sh create mode 100644 .travis.yml diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh new file mode 100755 index 0000000000..2cfaa05058 --- /dev/null +++ b/.ci/linux-build.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# check for whether we're clang or gcc +# setup the right options depending on the environment variables +# run the build + +# Just used for the 'classic' configuration system (ie: make) +set_conf() { + c="$1/.config" + shift + + if grep -q "$1" "$c"; then + sed -i "s:^$1=.*$:$1=$2:g" $c + else + echo $1=$2 >> "$c" + fi +} + + +if [ "${NINJABUILD}" == "1" ]; then + meson build + ninja -C build +else + make config T=x86_64-native-linuxapp-${CC} + if [ "${SHARED}" == "1" ]; then + set_conf build CONFIG_RTE_BUILD_SHARED_LIB y + fi + + if [ "${KERNEL}" == "1" ]; then + echo Unsupported kernel builds at the moment + fi + + make all +fi diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh new file mode 100755 index 0000000000..6f9849cb94 --- /dev/null +++ b/.ci/linux-setup.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3.5 -m pip install --upgrade meson --user diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000..432d6c9c6c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,39 @@ +language: c +compiler: + - gcc + - clang + +os: + - linux + +addons: + apt: + sources: + - deadsnakes #source for python 3.5 + - sourceline: 'ppa:mstipicevic/ninja-build-1-7-2' + packages: + - libnuma-dev + - linux-headers-$(uname -r) + - python3.5 + - python3-pip + - ninja-build + +before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh + +sudo: false + +env: + - SHARED=1 + - KERNEL=1 + - NINJABUILD=1 + +matrix: + include: + - compiler: clang + +script: ./.ci/${TRAVIS_OS_NAME}-build.sh + +notifications: + email: + recipients: + - test-rep...@dpdk.org diff --git a/MAINTAINERS b/MAINTAINERS index 66104405e5..14a7bf1284 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -119,6 +119,12 @@ F: config/rte_config.h F: buildtools/gen-pmdinfo-cfile.sh F: buildtools/symlink-drivers-solibs.sh +Public CI +M: Aaron Conole <acon...@redhat.com> +M: Michael Santana <msant...@redhat.com> +F: .travis.yml +F: .ci/ + ABI versioning M: Neil Horman <nhor...@tuxdriver.com> F: lib/librte_compat/ diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst index a64bb03683..745a11a67a 100644 --- a/doc/guides/contributing/patches.rst +++ b/doc/guides/contributing/patches.rst @@ -32,6 +32,9 @@ The mailing list for DPDK development is `dev@dpdk.org <http://mails.dpdk.org/ar Contributors will need to `register for the mailing list <http://mails.dpdk.org/listinfo/dev>`_ in order to submit patches. It is also worth registering for the DPDK `Patchwork <http://patches.dpdk.org/project/dpdk/list/>`_ +If you are using the GitHub service, you can link your repository to the ``travis-ci.org`` build service. When you push +patches to your repository, the travis service will automatically build your changes. + The development process requires some familiarity with the ``git`` version control system. Refer to the `Pro Git Book <http://www.git-scm.com/book/>`_ for further information. -- 2.19.1