From patchwork Fri Mar 22 16:56:51 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Santana X-Patchwork-Id: 51538 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 9B4781B6CF; Fri, 22 Mar 2019 17:56:55 +0100 (CET) Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 0A08C1B6CC for ; Fri, 22 Mar 2019 17:56:54 +0100 (CET) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 60214308623D; Fri, 22 Mar 2019 16:56:53 +0000 (UTC) Received: from localhost.localdomain.com (unknown [10.18.25.8]) by smtp.corp.redhat.com (Postfix) with ESMTP id 755A95D71E; Fri, 22 Mar 2019 16:56:52 +0000 (UTC) From: Michael Santana To: dev@dpdk.org Cc: Aaron Conole , Bruce Richardson , Honnappa Nagarahalli , Thomas Monjalon , Luca Boccassi Date: Fri, 22 Mar 2019 12:56:51 -0400 Message-Id: <20190322165651.23978-1-msantana@redhat.com> In-Reply-To: <20190304161232.5670-2-msantana@redhat.com> References: <20190304161232.5670-2-msantana@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Fri, 22 Mar 2019 16:56:53 +0000 (UTC) Subject: [dpdk-dev] [PATCH v7] ci: Introduce travis builds for github repositories X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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 Signed-off-by: Michael Santana Acked-by: Bruce Richardson Acked-by: Luca Boccassi Reviewed-by: Honnappa Nagarahalli --- .ci/linux-build.sh | 24 +++++++ .ci/linux-setup.sh | 3 + .travis.yml | 99 +++++++++++++++++++++++++++++ MAINTAINERS | 6 ++ doc/guides/contributing/patches.rst | 4 ++ 5 files changed, 136 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 000000000..767840e40 --- /dev/null +++ b/.ci/linux-build.sh @@ -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} -DRTE_ARCH_64=1 --cross-file config/arm/arm64_armv8_linuxapp_gcc" +fi + +OPTS="$OPTS --default-library=$DEF_LIB" +meson build --werror -Dexamples=all ${OPTS} +ninja -C build diff --git a/.ci/linux-setup.sh b/.ci/linux-setup.sh new file mode 100755 index 000000000..acdf9f370 --- /dev/null +++ b/.ci/linux-setup.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +python3 -m pip install --upgrade meson --user diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..3045eada5 --- /dev/null +++ b/.travis.yml @@ -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 diff --git a/MAINTAINERS b/MAINTAINERS index 15c53888c..e4b9a8e00 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 +M: Michael Santana +F: .travis.yml +F: .ci/ + ABI versioning M: Neil Horman F: doc/guides/rel_notes/deprecation.rst diff --git a/doc/guides/contributing/patches.rst b/doc/guides/contributing/patches.rst index 211a5cdc7..22a9039e8 100644 --- a/doc/guides/contributing/patches.rst +++ b/doc/guides/contributing/patches.rst @@ -32,6 +32,10 @@ The mailing list for DPDK development is `dev@dpdk.org `_ in order to submit patches. It is also worth registering for the DPDK `Patchwork `_ +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 `_ for further information.