From patchwork Wed Oct 13 08:03:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Serena He X-Patchwork-Id: 101306 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1A1F6A0C4D; Wed, 13 Oct 2021 10:04:22 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 04F1141179; Wed, 13 Oct 2021 10:04:22 +0200 (CEST) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mails.dpdk.org (Postfix) with ESMTP id E856041162; Wed, 13 Oct 2021 10:04:19 +0200 (CEST) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 56E621063; Wed, 13 Oct 2021 01:04:19 -0700 (PDT) Received: from serena-vm.oss.shanghai.arm.com (unknown [10.170.62.102]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id F01DB3F66F; Wed, 13 Oct 2021 01:04:15 -0700 (PDT) From: Serena He To: aconole@redhat.com, maicolgabriel@hotmail.com, david.marchand@redhat.com, thomas@monjalon.net Cc: dev@dpdk.org, nd@arm.com, honnappa.nagarahalli@arm.com, ruifeng.wang@arm.com, Dean.Arnold@arm.com, Serena He , stable@dpdk.org Date: Wed, 13 Oct 2021 16:03:41 +0800 Message-Id: <20211013080341.29561-2-serena.he@arm.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211013080341.29561-1-serena.he@arm.com> References: <20211013080341.29561-1-serena.he@arm.com> Subject: [dpdk-dev] [PATCH v1 1/1] ci: enable DPDK GHA for arm64 with self-hosted runners X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" CI jobs are triggered only for repos installed with given GHApp and runners Cc: stable@dpdk.org Signed-off-by: Serena He --- .github/workflows/build-arm64.yml | 118 ++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 .github/workflows/build-arm64.yml diff --git a/.github/workflows/build-arm64.yml b/.github/workflows/build-arm64.yml new file mode 100644 index 0000000000..570563f7c8 --- /dev/null +++ b/.github/workflows/build-arm64.yml @@ -0,0 +1,118 @@ +name: build-arm64 + +on: + push: + schedule: + - cron: '0 0 * * 1' + +defaults: + run: + shell: bash --noprofile --norc -exo pipefail {0} + +jobs: + build: + # Here, runners for arm64 are accessed by installed GitHub APP, thus will not be available by fork. + # you can change the following 'if' and 'runs-on' if you have your own runners installed. + # or request to get your repo on the whitelist to use GitHub APP and delete this 'if'. + if: ${{ github.repository == 'DPDK/dpdk' || github.repository == 'ovsrobot/dpdk' }} + name: ${{ join(matrix.config.*, '-') }} + runs-on: ${{ matrix.config.os }} + env: + ABI_CHECKS: ${{ contains(matrix.config.checks, 'abi') }} + BUILD_DOCS: ${{ contains(matrix.config.checks, 'doc') }} + CL: ${{ matrix.config.compiler == 'clang' }} + CC: ccache ${{ matrix.config.compiler }} + DEF_LIB: ${{ matrix.config.library }} + LIBABIGAIL_VERSION: libabigail-1.8 + REF_GIT_TAG: none + + strategy: + fail-fast: false + matrix: + config: + - os: [self-hosted,arm-ubuntu-20.04] + compiler: gcc + library: static + - os: [self-hosted,arm-ubuntu-20.04] + compiler: gcc + library: shared + checks: doc+tests + - os: [self-hosted,arm-ubuntu-20.04] + compiler: clang + library: static + - os: [self-hosted,arm-ubuntu-20.04] + compiler: clang + library: shared + checks: doc+tests + + steps: + - name: Checkout sources + uses: actions/checkout@v2 + - name: Generate cache keys + id: get_ref_keys + run: | + echo -n '::set-output name=ccache::' + echo 'ccache-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-'$(date -u +%Y-w%W) + echo -n '::set-output name=libabigail::' + echo 'libabigail-${{ matrix.config.os }}' + echo -n '::set-output name=abi::' + echo 'abi-${{ matrix.config.os }}-${{ matrix.config.compiler }}-${{ matrix.config.cross }}-${{ env.LIBABIGAIL_VERSION }}-${{ env.REF_GIT_TAG }}' + - name: Retrieve ccache cache + uses: actions/cache@v2 + with: + path: ~/.ccache + key: ${{ steps.get_ref_keys.outputs.ccache }}-${{ github.ref }} + restore-keys: | + ${{ steps.get_ref_keys.outputs.ccache }}-refs/heads/main + - name: Retrieve libabigail cache + id: libabigail-cache + uses: actions/cache@v2 + if: env.ABI_CHECKS == 'true' + with: + path: libabigail + key: ${{ steps.get_ref_keys.outputs.libabigail }} + - name: Retrieve ABI reference cache + uses: actions/cache@v2 + if: env.ABI_CHECKS == 'true' + with: + path: reference + key: ${{ steps.get_ref_keys.outputs.abi }} + - name: Update APT cache + run: sudo apt update || true + - name: Install packages + run: sudo apt install -y ccache libnuma-dev python3-setuptools + python3-wheel python3-pip python3-pyelftools ninja-build libbsd-dev + libpcap-dev libibverbs-dev libcrypto++-dev libfdt-dev libjansson-dev + libarchive-dev zlib1g-dev pkgconf + - name: Install libabigail build dependencies if no cache is available + if: env.ABI_CHECKS == 'true' && steps.libabigail-cache.outputs.cache-hit != 'true' + run: sudo apt install -y autoconf automake libtool pkg-config libxml2-dev + libdw-dev + + - name: Install test tools packages + run: sudo apt install -y gdb + - name: Install doc generation packages + if: env.BUILD_DOCS == 'true' + run: sudo apt install -y doxygen graphviz python3-sphinx + python3-sphinx-rtd-theme + - name: Run setup + run: | + .ci/linux-setup.sh + # Workaround on $HOME permissions as EAL checks them for plugin loading + chmod o-w $HOME + - name: Install clang + if: env.CL == 'true' + run: sudo apt install -y clang + - name: Build and test + run: .ci/linux-build.sh + - name: Upload logs on failure + if: failure() + uses: actions/upload-artifact@v2 + with: + name: meson-logs-${{ join(matrix.config.*, '-') }} + path: | + build/meson-logs/testlog.txt + build/.ninja_log + build/meson-logs/meson-log.txt + build/gdb.log +