1+ name : Static Build
2+
3+ on :
4+ workflow_dispatch :
5+ pull_request :
6+ branches :
7+ - develop
8+ - release
9+ push :
10+ branches :
11+ - develop
12+ - release
13+
14+ env :
15+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
16+ BUILD_TYPE : Release
17+ CTEST_OUTPUT_ON_FAILURE : 1
18+
19+ jobs :
20+ build :
21+ # The CMake configure and build commands are platform agnostic and should work equally
22+ # well on Windows or Mac. You can convert this to a matrix build if you need
23+ # cross-platform coverage.
24+ # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
25+ strategy :
26+ matrix :
27+ os : [ ubuntu-latest ]
28+ runs-on : ${{ matrix.os }}
29+
30+ steps :
31+ - uses : actions/checkout@v2
32+
33+ - name : Build and test static base
34+ run : |
35+ docker build -f docker/Dockerfile.static-base -t ns1labs/static-base .
36+
37+ - name : Get branch name
38+ shell : bash
39+ run : echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/} | tr / -)" >> $GITHUB_ENV
40+
41+ - name : Debug branch name
42+ run : echo ${{ env.BRANCH_NAME }}
43+
44+ - name : Get VERSION
45+ run : |
46+ echo "VERSION=`docker run --rm -a stdout --entrypoint cat ns1labs/static-base VERSION`" >> $GITHUB_ENV
47+
48+ - name : Debug version
49+ run : echo ${{ env.VERSION }}
50+
51+ - name : Generate ref tag (master)
52+ if : github.event_name != 'pull_request' && ${{ env.BRANCH_NAME == 'master' }}
53+ run : |
54+ echo "REF_TAG=latest" >> $GITHUB_ENV
55+
56+ - name : Generate ref tag (develop)
57+ if : github.event_name != 'pull_request' && ${{ env.BRANCH_NAME == 'develop' }}
58+ run : |
59+ echo "REF_TAG=latest-develop" >> $GITHUB_ENV
60+
61+ - name : Generate ref tag (release candidate)
62+ if : github.event_name != 'pull_request' && ${{ env.BRANCH_NAME == 'release' }}
63+ run : |
64+ echo "REF_TAG=latest-rc" >> $GITHUB_ENV
65+
66+ - name : Debug ref tag
67+ if : github.event_name != 'pull_request'
68+ run : echo ${{ env.REF_TAG }}
69+
70+ - name : Login to Docker Hub
71+ if : github.event_name != 'pull_request'
72+ uses : docker/login-action@v1
73+ with :
74+ username : ${{ secrets.DOCKERHUB_USERNAME }}
75+ password : ${{ secrets.DOCKERHUB_TOKEN }}
76+
77+ - name : Build and push static pktvisord container
78+ if : github.event_name != 'pull_request'
79+ env :
80+ BASE_BINARY : pktvisord
81+ IMAGE_NAME : ns1labs/pktvisord-slim
82+ run : |
83+ docker build -f docker/Dockerfile.${{ env.BASE_BINARY }}-static -t ${{ env.IMAGE_NAME }}:${{ env.REF_TAG }} -t ${{ env.IMAGE_NAME }}:${{ env.VERSION }} .
84+ docker push -a ${{ env.IMAGE_NAME }}
85+ echo "CONT_ID=$(docker create --name ${{ env.BASE_BINARY }}-slim-tmp ${{ env.IMAGE_NAME }}:${{ env.REF_TAG }})" >> $GITHUB_ENV
86+
87+ - name : Extract static pktvisord asset
88+ if : github.event_name != 'pull_request'
89+ env :
90+ BASE_BINARY : pktvisord
91+ IMAGE_NAME : ns1labs/pktvisord-slim
92+ run : |
93+ docker cp ${{ env.CONT_ID }}:/${{ env.BASE_BINARY }} ${{github.workspace}}/${{ env.BASE_BINARY }}-linux-x86_64-${{ env.VERSION }}
94+
95+ - name : Upload pktvisord artifact
96+ if : github.event_name != 'pull_request'
97+ env :
98+ BINARY_NAME : pktvisord-linux-x86_64-${{ env.VERSION }}
99+ uses : actions/upload-artifact@v2
100+ with :
101+ name : ${{ env.BINARY_NAME }}
102+ path : ${{github.workspace}}/${{ env.BINARY_NAME }}
103+
104+ - name : Build and push static pktvisor-reader container
105+ if : github.event_name != 'pull_request'
106+ env :
107+ BASE_BINARY : pktvisor-reader
108+ IMAGE_NAME : ns1labs/pktvisor-reader
109+ run : |
110+ docker build -f docker/Dockerfile.${{ env.BASE_BINARY }}-static -t ${{ env.IMAGE_NAME }}:${{ env.REF_TAG }} -t ${{ env.IMAGE_NAME }}:${{ env.VERSION }} .
111+ docker push -a ${{ env.IMAGE_NAME }}
112+ echo "CONT_ID=$(docker create --name ${{ env.BASE_BINARY }}-slim-tmp ${{ env.IMAGE_NAME }}:${{ env.REF_TAG }})" >> $GITHUB_ENV
113+
114+ - name : Extract static pktvisor-reader asset
115+ if : github.event_name != 'pull_request'
116+ env :
117+ BASE_BINARY : pktvisor-reader
118+ IMAGE_NAME : ns1labs/pktvisor-reader
119+ run : |
120+ docker cp ${{ env.CONT_ID }}:/${{ env.BASE_BINARY }} ${{github.workspace}}/${{ env.BASE_BINARY }}-linux-x86_64-${{ env.VERSION }}
121+
122+ - name : Upload pktvisor-reader artifact
123+ if : github.event_name != 'pull_request'
124+ env :
125+ BINARY_NAME : pktvisor-reader-linux-x86_64-${{ env.VERSION }}
126+ uses : actions/upload-artifact@v2
127+ with :
128+ name : ${{ env.BINARY_NAME }}
129+ path : ${{github.workspace}}/${{ env.BINARY_NAME }}
0 commit comments