ci: introduce Travis builds for GitHub repositories

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 series introduces the ability for any github mirrors of the DPDK
project, including developer mirrors, to kick off builds under the
travis CI infrastructure.  For now, this just means compilation - no
other kinds of automated run exists yet.  In the future, this can be
expanded to execute and report results for any test-suites that might
exist.

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.

The files added under .ci/ exist so that in the future, other CI
support platforms (such as cirrus, appveyor, etc.) could have a common
place to put their requisite scripts without polluting the main tree.

Signed-off-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: Michael Santana <msantana@redhat.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
This commit is contained in:
Michael Santana 2019-03-25 11:32:08 -04:00 committed by Thomas Monjalon
parent 866bc6742c
commit 99889bd852
5 changed files with 136 additions and 0 deletions

24
.ci/linux-build.sh Executable file
View File

@ -0,0 +1,24 @@
#!/bin/sh -xe
on_error() {
if [ $? = 0 ]; then
exit
fi
FILES_TO_PRINT="build/meson-logs/testlog.txt build/.ninja_log build/meson-logs/meson-log.txt"
for pr_file in $FILES_TO_PRINT; do
if [ -e "$pr_file" ]; then
cat "$pr_file"
fi
done
}
trap on_error EXIT
if [ "$AARCH64" = "1" ]; then
# convert the arch specifier
OPTS="$OPTS --cross-file config/arm/arm64_armv8_linuxapp_gcc"
fi
OPTS="$OPTS --default-library=$DEF_LIB"
meson build --werror -Dexamples=all $OPTS
ninja -C build

3
.ci/linux-setup.sh Executable file
View File

@ -0,0 +1,3 @@
#!/bin/sh
python3 -m pip install --upgrade meson --user

99
.travis.yml Normal file
View File

@ -0,0 +1,99 @@
language: c
compiler:
- gcc
- clang
dist: xenial
os:
- linux
addons:
apt:
update: true
packages: &required_packages
- [libnuma-dev, linux-headers-$(uname -r), python3-setuptools, python3-wheel, python3-pip, ninja-build]
aarch64_packages: &aarch64_packages
- *required_packages
- [gcc-aarch64-linux-gnu, libc6-dev-arm64-cross]
extra_packages: &extra_packages
- *required_packages
- [libbsd-dev, libpcap-dev, libcrypto++-dev, libjansson4]
before_install: ./.ci/${TRAVIS_OS_NAME}-setup.sh
sudo: false
env:
- DEF_LIB="static"
- DEF_LIB="shared"
- DEF_LIB="static" OPTS="-Denable_kmods=false"
- DEF_LIB="shared" OPTS="-Denable_kmods=false"
matrix:
include:
- env: DEF_LIB="static" OPTS="-Denable_kmods=false" AARCH64=1
compiler: gcc
addons:
apt:
packages:
- *aarch64_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false" AARCH64=1
compiler: gcc
addons:
apt:
packages:
- *aarch64_packages
- env: DEF_LIB="static"
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared"
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false"
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false"
compiler: gcc
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="static"
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared"
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="static" OPTS="-Denable_kmods=false"
compiler: clang
addons:
apt:
packages:
- *extra_packages
- env: DEF_LIB="shared" OPTS="-Denable_kmods=false"
compiler: clang
addons:
apt:
packages:
- *extra_packages
script: ./.ci/${TRAVIS_OS_NAME}-build.sh

View File

@ -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 <aconole@redhat.com>
M: Michael Santana <msantana@redhat.com>
F: .travis.yml
F: .ci/
ABI versioning
M: Neil Horman <nhorman@tuxdriver.com>
F: doc/guides/rel_notes/deprecation.rst

View File

@ -32,6 +32,10 @@ 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 GitHub
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.