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

Reply via email to