From 70f476386bd94e3dd1f200f23f5ed5fd8909611b Mon Sep 17 00:00:00 2001 From: qarlosalberto Date: Mon, 24 Jun 2024 13:02:29 +0200 Subject: [PATCH] build docker --- .github/workflows/ccpp.yml | 44 +++++------ .github/workflows/docker.yml | 145 +++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/docker.yml diff --git a/.github/workflows/ccpp.yml b/.github/workflows/ccpp.yml index 33fc24c6f1..407457e783 100644 --- a/.github/workflows/ccpp.yml +++ b/.github/workflows/ccpp.yml @@ -1,26 +1,18 @@ -# -# Copyright 2013-2024 Software Radio Systems Limited -# -# By using this file, you agree to the terms and conditions set -# forth in the LICENSE file which can be found at the top level of -# the distribution. -# - -name: C/C++ CI -on: push -jobs: - x86_ubuntu_build: - name: Build on x86 - runs-on: ${{ matrix.os }} - strategy: - fail-fast: false - matrix: - os: [ubuntu-22.04, ubuntu-20.04] - compiler: [gcc, clang] - steps: - - uses: actions/checkout@v3 - - name: Build srsRAN Project on x86 ${{ matrix.os }} - run: | - sudo apt update - sudo apt install -y cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev ninja-build - mkdir build && cd build && cmake -DENABLE_UHD=False -GNinja .. && ninja && ctest \ No newline at end of file +# name: C/C++ CI +# on: push +# jobs: +# x86_ubuntu_build: +# name: Build on x86 +# runs-on: ${{ matrix.os }} +# strategy: +# fail-fast: false +# matrix: +# os: [ubuntu-22.04, ubuntu-20.04] +# compiler: [gcc, clang] +# steps: +# - uses: actions/checkout@v3 +# - name: Build srsRAN Project on x86 ${{ matrix.os }} +# run: | +# sudo apt update +# sudo apt install -y cmake make gcc g++ pkg-config libfftw3-dev libmbedtls-dev libsctp-dev libyaml-cpp-dev libgtest-dev ninja-build +# mkdir build && cd build && cmake -DENABLE_UHD=False -GNinja .. && ninja && ctest \ No newline at end of file diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000000..81adbc5d20 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,145 @@ +name: Docker Build +on: + push: + branches: + - main + - test + - release + - build_docker + +jobs: + docker: + runs-on: ubuntu-latest + strategy: + matrix: + include: + # --> split72 + # AMD AVX2 + - SUFFIX: release_avx2 + SPLIT: "split72" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: x86-64-v3 + TAG: amd64-avx2 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + - SUFFIX: release_with_debug_avx2 + SPLIT: "split72" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: x86-64-v3 + TAG: amd64-avx2 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + # AMD AVX512 + - SUFFIX: release_avx512 + SPLIT: "split72" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: x86-64-v4 + TAG: amd64-avx2-avx512 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + - SUFFIX: release_with_debug_avx512 + SPLIT: "split72" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: x86-64-v4 + TAG: amd64-avx2-avx512 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + # ARM + - SUFFIX: release_arm + SPLIT: "split72" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: armv8.2-a+crypto+fp16+dotprod + TAG: arm64 + PLATFORM: arm64 + LIB: dpdk + LIB_VERSION: "23.11" + - SUFFIX: release_with_debug_arm + SPLIT: "split72" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: armv8.2-a+crypto+fp16+dotprod + TAG: arm64 + PLATFORM: arm64 + LIB: dpdk + LIB_VERSION: "23.11" + # --> split8 + # AMD AVX2 + - SUFFIX: release_avx2 + SPLIT: "split8" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: x86-64-v3 + TAG: amd64-avx2 + PLATFORM: amd64 + LIB: uhd + LIB_VERSION: "4.6.0.0" + - SUFFIX: release_with_debug_avx2 + SPLIT: "split8" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: x86-64-v3 + TAG: amd64-avx2 + PLATFORM: amd64 + LIB: uhd + LIB_VERSION: "4.6.0.0" + # ARM + - SUFFIX: release_arm + SPLIT: "split8" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: armv8.2-a+crypto+fp16+dotprod + TAG: arm64 + PLATFORM: arm64 + LIB: uhd + LIB_VERSION: "4.6.0.0" + - SUFFIX: release_with_debug_arm + SPLIT: "split8" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: armv8.2-a+crypto+fp16+dotprod + TAG: arm64 + PLATFORM: arm64 + LIB: uhd + LIB_VERSION: "4.6.0.0" + + env: + NAME: srsran_${{ matrix.SPLIT }}_${{ matrix.SUFFIX }} + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Determine tags based on branch + id: tags + run: | + BRANCH_NAME="${GITHUB_REF#refs/heads/}" + DATE_TAG="${GITHUB_SHA:0:10}-$(date +'%Y-%m-%d')" + if [ "$BRANCH_NAME" == "main" ]; then + echo "::set-output name=tags::${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:latest" + elif [ "$BRANCH_NAME" == "test" ]; then + echo "::set-output name=tags:${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:next" + elif [ "$BRANCH_NAME" == "release" ]; then + echo "::set-output name=tags::${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:${BRANCH_NAME}" + elif [ "$BRANCH_NAME" == "build_docker" ]; then + echo "::set-output name=tags::${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:${BRANCH_NAME}" + fi + + - name: Check tags + run: echo "${{ steps.tags.outputs.tags }}" + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: false + tags: ${{ steps.tags.outputs.tags }} + file: ./docker/Dockerfile + platforms: ${{ matrix.PLATFORM }} + build-args: | + NAME="srsran_${SPLIT}_${SUFFIX}" + LIB=${{ matrix.LIB }} + LIB_VERSION=${{ matrix.LIB_VERSION }} + ARCH=${{ matrix.ARCH }}