From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id DC6DBA0545; Wed, 25 Nov 2020 14:45:12 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 5FFF6C93E; Wed, 25 Nov 2020 14:45:10 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by dpdk.org (Postfix) with ESMTP id CC054C93A for ; Wed, 25 Nov 2020 14:45:07 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1606311905; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=oi0bYGffaj7H/K1Jsx/+cw3exKVbKHH/6IAXZGXE5ww=; b=XAkGBTDbFQpOQ3+5XQ2poAa+F3oUDmCdBpA6yWvxIY0RQFPYpNZsz7WYncnB8Z0331DTmk ILug9OfUpLnFgI9tjGVTgTkOtg746ToaSYulDWqzMGw6l3SD1q/PeO0ZxyRIi49xlL9SOW ib3VFzDqqQz920JyCEPyKeaibNRYoBw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-547-Fo0_nAx9M36A3cwgyCB4rA-1; Wed, 25 Nov 2020 08:45:00 -0500 X-MC-Unique: Fo0_nAx9M36A3cwgyCB4rA-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3774F81CBEF; Wed, 25 Nov 2020 13:44:59 +0000 (UTC) Received: from dhcp-25.97.bos.redhat.com (ovpn-114-232.rdu2.redhat.com [10.10.114.232]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7BB1D5C1BD; Wed, 25 Nov 2020 13:44:55 +0000 (UTC) From: Aaron Conole To: David Marchand Cc: dev@dpdk.org, Michael Santana , Thomas Monjalon References: <20201124215700.12126-1-david.marchand@redhat.com> Date: Wed, 25 Nov 2020 08:44:54 -0500 In-Reply-To: <20201124215700.12126-1-david.marchand@redhat.com> (David Marchand's message of "Tue, 24 Nov 2020 22:57:00 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=aconole@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain Subject: Re: [dpdk-dev] [PATCH] ci: hook to Github Actions 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" David Marchand writes: > With the recent changes in terms of free access to the Travis CI, let's > offer an alternative with Github Actions. > Running jobs on ARM is not supported unless using external runners, so > this commit only adds builds for x86_64 and cross compiling for i386 and > aarch64. > > Differences with the Travis CI integration: > - All jobs generate documentation. > This is not that heavy and the default timeout on actions is never > reached so no reason splitting this into multiple jobs. > - Error logs are not dumped to the console when something goes wrong. > Instead, they are gathered in a "catch-all" step and attached as > artifacts. > - A cache entry is stored once and for all, but if no cache is found you > can inherit from the default branch cache. The cache is 5GB large, for > the whole git repository. > - The maximum retention of logs and artifacts is 3 months. > - /home/runner is world writable, so a workaround has been added for > starting dpdk processes. > > Signed-off-by: David Marchand > --- Thanks for working on this. Sadly, I think we will have to abandon Travis soon - given the new changes it is looking very awful. Robot already is starved for job time. Since we don't have ARM test runs, I guess we will have to rely on something else for that coverage now, but I like that there is coverage included at least to compile. I will need to update the robot to pull information from github actions, so for now it will need to be manually checked (but here's an example of a run: https://github.com/ovsrobot/dpdk/actions/runs/382073265). What's nice is the robot is already primed to run the jobs, so that's good. Acked-by: Aaron Conole > .ci/linux-build.sh | 4 +- > .github/workflows/build.yml | 98 +++++++++++++++++++++++++++++++++++++ > MAINTAINERS | 1 + > 3 files changed, 102 insertions(+), 1 deletion(-) > create mode 100644 .github/workflows/build.yml > > diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh > index d079801d78..a2a0e5bf42 100755 > --- a/.ci/linux-build.sh > +++ b/.ci/linux-build.sh > @@ -12,7 +12,9 @@ on_error() { > fi > done > } > -trap on_error EXIT > +# We capture the error logs as artifacts in Github Actions, no need to dump > +# them via a EXIT handler. > +[ -n "$GITHUB_WORKFLOW" ] || trap on_error EXIT > > install_libabigail() { > version=$1 > diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml > new file mode 100644 > index 0000000000..e0a8f1ed52 > --- /dev/null > +++ b/.github/workflows/build.yml > @@ -0,0 +1,98 @@ > +name: build > + > +on: push > + > +defaults: > + run: > + shell: bash --noprofile --norc -exo pipefail {0} > + > +jobs: > + build: > + name: ${{ join(matrix.config.*, '-') }} > + runs-on: ${{ matrix.config.os }} > + env: > + PKGS: | > + ccache libnuma-dev python3-setuptools python3-wheel python3-pip \ > + ninja-build libbsd-dev libpcap-dev libibverbs-dev libcrypto++-dev \ > + libfdt-dev libjansson-dev doxygen graphviz python3-sphinx \ > + python3-sphinx-rtd-theme > + CC: ccache ${{ matrix.config.compiler }} > + JOBNAME: ${{ join(matrix.config.*, '-') }} > + > + strategy: > + fail-fast: false > + matrix: > + config: > + - os: ubuntu-18.04 > + compiler: gcc > + library: static > + - os: ubuntu-18.04 > + compiler: gcc > + library: shared > + - os: ubuntu-18.04 > + compiler: clang > + library: static > + - os: ubuntu-18.04 > + compiler: clang > + library: shared > + - os: ubuntu-18.04 > + compiler: gcc > + library: static > + cross: i386 > + - os: ubuntu-18.04 > + compiler: gcc > + library: static > + cross: aarch64 > + - os: ubuntu-18.04 > + compiler: gcc > + library: shared > + cross: aarch64 > + > + steps: > + - uses: actions/checkout@v2 > + - uses: actions/cache@v2 > + with: > + path: ~/.ccache > + key: ${{ env.JOBNAME }}-${{ github.ref }} > + restore-keys: | > + ${{ env.JOBNAME }}-refs/heads/main > + - name: Install packages > + run: sudo apt install -y ${{ env.PKGS }} > + - name: Install i386 cross compiling packages > + if: matrix.config.cross == 'i386' > + run: sudo apt install -y gcc-multilib > + - name: Install aarch64 cross compiling packages > + if: matrix.config.cross == 'aarch64' > + run: | > + sudo apt install -y gcc-aarch64-linux-gnu libc6-dev-arm64-cross \ > + pkg-config-aarch64-linux-gnu > + - name: Prepare environment > + run: | > + .ci/linux-setup.sh > + # Workaround on $HOME permissions as EAL checks them for plugin loading > + chmod o-w $HOME > + - name: Build and test > + run: | > + export DEF_LIB=${{ matrix.config.library }} > + export BUILD_DOCS=1 > + case '${{ matrix.config.cross }}' in > + 'i386') > + export BUILD_32BIT=1 > + ;; > + 'aarch64') > + export AARCH64=1 > + ;; > + '') > + export RUN_TESTS=1 > + ;; > + esac > + .ci/linux-build.sh > + - name: Upload logs on failure > + if: failure() > + uses: actions/upload-artifact@v2 > + with: > + name: meson-logs-${{ env.JOBNAME }} > + path: | > + build/meson-logs/testlog.txt > + build/.ninja_log > + build/meson-logs/meson-log.txt > diff --git a/MAINTAINERS b/MAINTAINERS > index 214515060a..95b61085b7 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -109,6 +109,7 @@ Public CI > M: Aaron Conole > M: Michael Santana > F: .travis.yml > +F: .github/workflows/build.yml > F: .ci/ > > ABI Policy & Versioning