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..bf86da33b7 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,148 @@ +name: Docker Builder +on: + push: + branches: + - main + - test + - other + release: + types: [published] + +jobs: + docker: + runs-on: ubuntu-latest + strategy: + matrix: + include: + # --> metrics server + - NAME: "" + HUB: metrics-server + EXTRA_CMAKE_ARGS: "" + ARCH: "" + PLATFORM: amd64 + LIB: "" + LIB_VERSION: "" + DOCKERFILE: ./docker/grafana/Dockerfile + CONTEXT: ./docker/grafana + # --> grafana + - NAME: "" + HUB: "grafana" + EXTRA_CMAKE_ARGS: "" + ARCH: "" + PLATFORM: amd64 + LIB: "" + LIB_VERSION: "" + DOCKERFILE: ./docker/metrics_server/Dockerfile + CONTEXT: ./docker/metrics_server + # --> split72 + # AMD AVX2 + - NAME: "\split72_release_avx2" + HUB: "srsran-project" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: x86-64-v3 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + DOCKERFILE: ./docker/Dockerfile + CONTEXT: ./ + - NAME: "\split72_release_with_debug_avx2" + HUB: "srsran-project" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: x86-64-v3 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + DOCKERFILE: ./docker/Dockerfile + CONTEXT: ./ + # AMD AVX512 + - NAME: "\split72_release_avx512" + HUB: "srsran-project" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: x86-64-v4 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + DOCKERFILE: ./docker/Dockerfile + CONTEXT: ./ + - NAME: "\split72_release_with_debug_avx512" + HUB: "srsran-project" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: x86-64-v4 + PLATFORM: amd64 + LIB: dpdk + LIB_VERSION: "23.11" + DOCKERFILE: ./docker/Dockerfile + CONTEXT: ./ + # --> split8 + # AMD AVX2 + - NAME: "\split8_release_avx2" + HUB: "srsran-project" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off + ARCH: x86-64-v3 + PLATFORM: amd64 + LIB: uhd + LIB_VERSION: "4.6.0.0" + DOCKERFILE: ./docker/Dockerfile + CONTEXT: ./ + - NAME: "\split8_release_with_debug_avx2" + HUB: "srsran-project" + EXTRA_CMAKE_ARGS: -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On + ARCH: x86-64-v3 + PLATFORM: amd64 + LIB: uhd + LIB_VERSION: "4.6.0.0" + DOCKERFILE: ./docker/Dockerfile + CONTEXT: ./ + env: + PREFIX: softwareradiosystems/${{ matrix.HUB }}:${{ matrix.NAME }} + environment: dockerhub + 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')" + RELEASE_NAME="${{ github.event.release.name }}" + + if [ -n "$RELEASE_NAME" ]; then + tags="${{ env.PREFIX }}-${DATE_TAG},${{ env.PREFIX }}-${RELEASE_NAME}" + else + if [ "$BRANCH_NAME" == "main" ]; then + tags="${{ env.PREFIX }}-${DATE_TAG},${{ env.PREFIX }}-latest" + elif [ "$BRANCH_NAME" == "other" ]; then + tags="${{ env.PREFIX }}-${DATE_TAG},${{ env.PREFIX }}-next" + fi + fi + echo "tags=$tags" + echo "tags=$tags" >> $GITHUB_OUTPUT + + - name: Login to Docker Hub + uses: docker/login-action@v3.2.0 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + logout: true + ecr: false + + - name: Build and push + uses: docker/build-push-action@v6 + with: + push: true + tags: ${{ steps.tags.outputs.tags }} + file: ${{ matrix.DOCKERFILE }} + platforms: ${{ matrix.PLATFORM }} + context: ${{ matrix.CONTEXT }} + build-args: | + NAME="${{ env.NAME }}" + LIB=${{ matrix.LIB }} + LIB_VERSION=${{ matrix.LIB_VERSION }} + ARCH=${{ matrix.ARCH }} \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index 876db00e4f..1a21e366d1 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -36,7 +36,7 @@ ARG NUM_CORES="" ################## # Stage 1: Build # ################## -FROM ubuntu:$OS_VERSION as builder +FROM ubuntu:$OS_VERSION AS builder # Adding the complete repo to the context, in /src folder ADD . /src