1+ name : Docker Builder
2+ on :
3+ push :
4+ branches :
5+ - main
6+ - test
7+ release :
8+ types : [published]
9+
10+ jobs :
11+ docker :
12+ runs-on : ubuntu-latest
13+ strategy :
14+ matrix :
15+ include :
16+ # --> split72
17+ # AMD AVX2
18+ - SUFFIX : release_avx2
19+ SPLIT : " split72"
20+ EXTRA_CMAKE_ARGS : -DAUTO_DETECT_ISA=Off
21+ ARCH : x86-64-v3
22+ TAG : amd64-avx2
23+ PLATFORM : amd64
24+ LIB : dpdk
25+ LIB_VERSION : " 23.11"
26+ - SUFFIX : release_with_debug_avx2
27+ SPLIT : " split72"
28+ EXTRA_CMAKE_ARGS : -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On
29+ ARCH : x86-64-v3
30+ TAG : amd64-avx2
31+ PLATFORM : amd64
32+ LIB : dpdk
33+ LIB_VERSION : " 23.11"
34+ # AMD AVX512
35+ - SUFFIX : release_avx512
36+ SPLIT : " split72"
37+ EXTRA_CMAKE_ARGS : -DAUTO_DETECT_ISA=Off
38+ ARCH : x86-64-v4
39+ TAG : amd64-avx2-avx512
40+ PLATFORM : amd64
41+ LIB : dpdk
42+ LIB_VERSION : " 23.11"
43+ - SUFFIX : release_with_debug_avx512
44+ SPLIT : " split72"
45+ EXTRA_CMAKE_ARGS : -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On
46+ ARCH : x86-64-v4
47+ TAG : amd64-avx2-avx512
48+ PLATFORM : amd64
49+ LIB : dpdk
50+ LIB_VERSION : " 23.11"
51+ # --> split8
52+ # AMD AVX2
53+ - SUFFIX : release_avx2
54+ SPLIT : " split8"
55+ EXTRA_CMAKE_ARGS : -DAUTO_DETECT_ISA=Off
56+ ARCH : x86-64-v3
57+ TAG : amd64-avx2
58+ PLATFORM : amd64
59+ LIB : uhd
60+ LIB_VERSION : " 4.6.0.0"
61+ - SUFFIX : release_with_debug_avx2
62+ SPLIT : " split8"
63+ EXTRA_CMAKE_ARGS : -DAUTO_DETECT_ISA=Off -DFORCE_DEBUG_INFO=On
64+ ARCH : x86-64-v3
65+ TAG : amd64-avx2
66+ PLATFORM : amd64
67+ LIB : uhd
68+ LIB_VERSION : " 4.6.0.0"
69+ env :
70+ NAME : srsran_${{ matrix.SPLIT }}_${{ matrix.SUFFIX }}
71+ environment : dockerhub
72+ steps :
73+ - name : Checkout code
74+ uses : actions/checkout@v4
75+
76+ - name : Set up QEMU
77+ uses : docker/setup-qemu-action@v3
78+
79+ - name : Set up Docker Buildx
80+ uses : docker/setup-buildx-action@v3
81+
82+ - name : Determine tags based on branch
83+ id : tags
84+ run : |
85+ BRANCH_NAME="${GITHUB_REF#refs/heads/}"
86+ DATE_TAG="${GITHUB_SHA:0:10}-$(date +'%Y-%m-%d')"
87+ RELEASE_NAME="${{ github.event.release.name }}"
88+
89+ if [ -n "$RELEASE_NAME" ]; then
90+ tags="${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:${RELEASE_NAME}"
91+ else
92+ if [ "$BRANCH_NAME" == "main" ]; then
93+ tags="${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:latest"
94+ elif [ "$BRANCH_NAME" == "test" ]; then
95+ tags="${{ env.NAME }}:${DATE_TAG},${{ env.NAME }}:next"
96+ fi
97+ fi
98+ echo "tags=$tags" >> $GITHUB_OUTPUT
99+
100+ - name : Login to Docker Hub
101+ 102+ with :
103+ username : ${{ secrets.DOCKERHUB_USERNAME }}
104+ password : ${{ secrets.DOCKERHUB_TOKEN }}
105+ logout : true
106+ ecr : false
107+
108+ - name : Build and push
109+ uses : docker/build-push-action@v6
110+ with :
111+ push : true
112+ tags : ${{ steps.tags.outputs.tags }}
113+ file : ./docker/Dockerfile
114+ platforms : ${{ matrix.PLATFORM }}
115+ build-args : |
116+ NAME="srsran_${SPLIT}_${SUFFIX}"
117+ LIB=${{ matrix.LIB }}
118+ LIB_VERSION=${{ matrix.LIB_VERSION }}
119+ ARCH=${{ matrix.ARCH }}
0 commit comments