Skip to content

Commit ba37b0b

Browse files
authored
Update ci.yml
1 parent c6ac48e commit ba37b0b

1 file changed

Lines changed: 34 additions & 206 deletions

File tree

.github/workflows/ci.yml

Lines changed: 34 additions & 206 deletions
Original file line numberDiff line numberDiff line change
@@ -29,54 +29,36 @@ jobs:
2929
- uses: actions/checkout@v4
3030
with:
3131
submodules: true
32-
- name: Set binary paths
33-
id: set_binaries
34-
run: |
35-
echo "ACC_BINARY=build/bin/ACC" >> $GITHUB_OUTPUT
3632
- name: Setup ccache
3733
uses: hendrikmuhs/ccache-action@v1.2
3834
with:
3935
key: ccache-${{ github.job }}-${{ matrix.build_type }}
4036
max-size: 2G
4137
- name: Build
4238
run: |
43-
cmake -S . -B build -G Ninja \
44-
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
45-
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
46-
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
47-
-DOPENCV_PATH=build/3rdparty/opencv_build \
48-
${{ matrix.stats && '-DENABLE_STATISTIC_TENSORS=ON' || '' }} \
49-
${{ matrix.stats && '-DENABLE_STATISTIC_TIME=ON' || '' }} \
50-
${{ matrix.stats && '-DENABLE_STATISTIC_WEIGHTS=ON' || '' }}
51-
cmake --build build --parallel
52-
env:
53-
CTEST_OUTPUT_ON_FAILURE: 1
39+
cmake -S . -B build \
40+
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
41+
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
42+
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
43+
-DOPENCV_PATH=build/3rdparty/opencv_build \
44+
${{ matrix.stats && '-DENABLE_STATISTIC_TENSORS=ON' || '' }} \
45+
${{ matrix.stats && '-DENABLE_STATISTIC_TIME=ON' || '' }} \
46+
${{ matrix.stats && '-DENABLE_STATISTIC_WEIGHTS=ON' || '' }}
47+
cmake --build build --parallel
5448
- name: Prepare OpenCV libs
5549
run: |
56-
mkdir -p build/bin/opencv_libs
57-
cp -a build/3rdparty/opencv_build/lib/libopencv_* build/bin/opencv_libs/
58-
echo "Library permissions after copy:"
59-
stat -c "%A %n" build/bin/opencv_libs/libopencv_imgcodecs.so*
60-
50+
mkdir -p build/bin/opencv_libs
51+
cp -a build/3rdparty/opencv_build/lib/libopencv_* build/bin/opencv_libs/
6152
- name: Upload artifacts
6253
uses: actions/upload-artifact@v4
6354
with:
64-
name: mnist-${{ matrix.build_type }}${{ matrix.stats && '-stats' || '' }}
65-
path: |
66-
${{ steps.set_binaries.outputs.ACC_BINARY }}
67-
build/bin/opencv_libs/*
68-
build/setenv.sh
55+
name: mnist-${{ matrix.build_type }}${{ matrix.stats && '-stats' || '' }}
56+
path: |
57+
build/bin/ACC
58+
build/bin/opencv_libs/*
59+
build/setenv.sh
6960
- name: Test
7061
run: cmake --build build -t test
71-
env:
72-
CTEST_OUTPUT_ON_FAILURE: 1
73-
- name: Test (valgrind)
74-
run: |
75-
sudo apt-get update
76-
sudo apt-get install -y valgrind
77-
valgrind cmake --build build -t test
78-
env:
79-
CTEST_OUTPUT_ON_FAILURE: 1
8062
build-linux-clang:
8163
runs-on: ubuntu-latest
8264
steps:
@@ -92,23 +74,14 @@ jobs:
9274
key: ccache-${{ github.job }}
9375
- name: Build
9476
run: |
95-
cmake -S . -B build -G Ninja \
77+
cmake -S . -B build \
9678
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
9779
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
9880
-DCMAKE_C_COMPILER=clang \
9981
-DCMAKE_CXX_COMPILER=clang++
10082
cmake --build build --parallel
10183
- name: Test
10284
run: cmake --build build -t test
103-
env:
104-
CTEST_OUTPUT_ON_FAILURE: 1
105-
- name: Test (valgrind)
106-
run: |
107-
sudo apt-get update
108-
sudo apt-get install -y valgrind
109-
valgrind cmake --build build -t test
110-
env:
111-
CTEST_OUTPUT_ON_FAILURE: 1
11285
build-macos:
11386
runs-on: macos-15
11487
steps:
@@ -117,37 +90,20 @@ jobs:
11790
submodules: true
11891
- name: Install prerequisites
11992
run: |
120-
brew install libomp ninja
93+
brew install libomp
12194
brew link libomp --overwrite --force
12295
- name: Setup ccache
12396
uses: hendrikmuhs/ccache-action@v1.2
12497
with:
12598
key: ccache-${{ github.job }}
12699
- name: Build
127100
run: |
128-
OPENMP_PATH=$(brew --prefix libomp)
129-
echo "OpenMP path: $OPENMP_PATH"
130-
cmake -S . -B build -G Ninja \
101+
cmake -S . -B build \
131102
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
132-
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
133-
-DCMAKE_PREFIX_PATH=$OPENMP_PATH \
134-
-DCMAKE_INCLUDE_PATH=$OPENMP_PATH/include \
135-
-DCMAKE_LIBRARY_PATH=$OPENMP_PATH/lib \
136-
-DOpenMP_C_FLAGS="-Xclang -fopenmp -I$OPENMP_PATH/include" \
137-
-DOpenMP_CXX_FLAGS="-Xclang -fopenmp -I$OPENMP_PATH/include" \
138-
-DOpenMP_C_LIB_NAMES="omp" \
139-
-DOpenMP_CXX_LIB_NAMES="omp" \
140-
-DOpenMP_omp_LIBRARY="$OPENMP_PATH/lib/libomp.dylib" \
141-
-DCMAKE_EXE_LINKER_FLAGS="-L$OPENMP_PATH/lib -lomp" \
142-
-DCMAKE_SHARED_LINKER_FLAGS="-L$OPENMP_PATH/lib -lomp"
103+
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
143104
cmake --build build --parallel
144-
env:
145-
LDFLAGS: "-L$(brew --prefix libomp)/lib -lomp"
146-
CPPFLAGS: "-I$(brew --prefix libomp)/include"
147105
- name: Test
148106
run: cmake --build build -t test
149-
env:
150-
CTEST_OUTPUT_ON_FAILURE: 1
151107
build-windows:
152108
runs-on: windows-2025
153109
steps:
@@ -156,15 +112,13 @@ jobs:
156112
submodules: true
157113
- name: Add msbuild to PATH
158114
uses: microsoft/setup-msbuild@v2
159-
with:
160-
vs-version: 'latest'
161115
- name: Setup ccache
162116
uses: Chocobo1/setup-ccache-action@v1
163117
with:
164118
windows_compile_environment: msvc
165119
- name: Setup ninja
166120
uses: seanmiddleditch/gha-setup-ninja@v6
167-
- name: Setup MSVC for Ninja again
121+
- name: Setup MSVC for Ninja
168122
uses: ilammy/msvc-dev-cmd@v1
169123
- name: Build
170124
run: |
@@ -188,14 +142,12 @@ jobs:
188142
key: ccache-${{ github.job }}
189143
- name: Build and Test
190144
run: |
191-
cmake -S . -B build -G Ninja \
145+
cmake -S . -B build \
192146
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
193147
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
194148
-DCMAKE_BUILD_TYPE=Release
195149
cmake --build build --parallel
196150
cmake --build build -t test
197-
env:
198-
CTEST_OUTPUT_ON_FAILURE: 1
199151
codecov:
200152
runs-on: ubuntu-latest
201153
steps:
@@ -204,28 +156,19 @@ jobs:
204156
submodules: true
205157
- name: Install dependencies
206158
run: sudo apt-get update && sudo apt-get install -y gcovr
207-
- uses: actions/checkout@v4
208-
with:
209-
submodules: true
210159
- name: Setup ccache
211160
uses: hendrikmuhs/ccache-action@v1.2
212-
with:
213-
key: ccache-${{ github.job }}-${{ matrix.build_type }}
214-
max-size: 2G
215161
- name: Build
216162
run: |
217-
cmake -S . -B build -G Ninja \
163+
cmake -S . -B build \
218164
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
219165
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
220166
-DCMAKE_C_FLAGS="--coverage" \
221167
-DCMAKE_CXX_FLAGS="--coverage" \
222-
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }} \
223-
-DCMAKE_BUILD_TYPE=${{ matrix.build_type }}
168+
-DCMAKE_BUILD_TYPE=Debug
224169
cmake --build build --parallel
225170
- name: Test
226171
run: cmake --build build -t test
227-
env:
228-
CTEST_OUTPUT_ON_FAILURE: 1
229172
- name: Generate Coverage Data
230173
run: gcovr -r . --xml -o coverage.xml --gcov-ignore-parse-errors
231174
- name: Upload coverage reports to Codecov
@@ -239,42 +182,10 @@ jobs:
239182
needs: [build-linux]
240183
permissions:
241184
contents: write
242-
243185
steps:
244186
- uses: actions/checkout@v4
245187
with:
246188
fetch-depth: 0
247-
248-
- name: Download binary and libs
249-
uses: actions/download-artifact@v4
250-
with:
251-
name: mnist-RELEASE
252-
path: build/
253-
254-
- name: Verify downloaded artifacts
255-
run: |
256-
echo "### Verifying downloaded artifacts ###"
257-
echo "Current directory: $(pwd)"
258-
echo "Build directory contents:"
259-
ls -la build/ || echo "No build directory"
260-
echo "Looking for ACC binary:"
261-
find build/ -name "ACC" -type f 2>/dev/null || echo "ACC not found"
262-
echo "Checking bin directory:"
263-
ls -la build/bin/ 2>/dev/null || echo "No bin directory"
264-
265-
- name: Set binary path
266-
id: set_eval_binary
267-
run: |
268-
if [ -f "build/bin/ACC" ]; then
269-
echo "ACC binary found at build/bin/ACC"
270-
echo "EVAL_BINARY=build/bin/ACC" >> $GITHUB_OUTPUT
271-
else
272-
echo "ERROR: ACC binary not found at build/bin/ACC"
273-
echo "Available files:"
274-
find build/ -type f -name "*" 2>/dev/null | head -20
275-
exit 1
276-
fi
277-
278189
- name: Install system dependencies
279190
run: |
280191
sudo apt-get update
@@ -283,11 +194,8 @@ jobs:
283194
libtbb12 \
284195
libjpeg-dev \
285196
libpng-dev \
286-
libtiff-dev \
287-
libopenjp2-7 \
288-
libdnnl3
197+
libtiff-dev
289198
sudo ldconfig
290-
291199
- name: Generate model JSON
292200
run: |
293201
cd docs && mkdir -p jsons
@@ -296,128 +204,48 @@ jobs:
296204
pip install -r requirements.txt
297205
python parser.py
298206
cd ../..
299-
300207
- name: Cache MNIST test dataset
301208
id: cache-mnist
302209
uses: actions/cache@v4
303210
with:
304211
path: docs/mnist/mnist/test
305212
key: mnist-dataset-e2d09c892023700f68bfa9f30ac91a4dffaa23b151deeaca627101b3d73ef83d
306-
307213
- name: Download MNIST test dataset
308214
if: steps.cache-mnist.outputs.cache-hit != 'true'
309215
run: |
310216
set -e
311217
mkdir -p docs/mnist/mnist/test
312-
echo "Downloading test images..."
313218
wget -q https://github.com/DeepTrackAI/MNIST_dataset/archive/main.zip -O main.zip
314219
unzip -q main.zip
315220
cp MNIST_dataset-main/mnist/test/*.png docs/mnist/mnist/test/
316221
rm -rf main.zip MNIST_dataset-main
317-
echo "Downloaded $(ls docs/mnist/mnist/test | wc -l) images"
318-
222+
- name: Download binary and libs
223+
uses: actions/download-artifact@v4
224+
with:
225+
name: mnist-RELEASE
226+
path: build/
319227
- name: Prepare environment
320228
run: |
321-
echo "### Preparing environment ###"
322-
echo "Binary path: ${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
323-
324-
ls -la "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
325-
chmod +x "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
326-
229+
chmod +x build/bin/ACC
327230
export LD_LIBRARY_PATH=$PWD/build/bin/opencv_libs:/usr/lib/x86_64-linux-gnu
328-
echo "Final LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
329-
330-
- name: Verify library integrity
331-
run: |
332-
echo "### Library verification ###"
333-
ls -la build/bin/opencv_libs/ || echo "No opencv_libs directory"
334-
file build/bin/opencv_libs/libopencv_imgcodecs.so* 2>/dev/null | head -1 || echo "No opencv_imgcodecs library found"
335-
336-
- name: Test binary execution
337-
run: |
338-
echo "### Testing binary execution ###"
339-
export LD_LIBRARY_PATH=$PWD/build/bin/opencv_libs:/usr/lib/x86_64-linux-gnu
340-
341-
echo "Binary dependencies:"
342-
ldd "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" 2>/dev/null || echo "ldd failed"
343-
344-
echo "Testing help command:"
345-
timeout 10s "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --help > /dev/null 2>&1 || echo "Help test completed"
346-
347231
- name: Run evaluation
348232
run: |
349-
echo "### Running evaluation ###"
350-
export LD_LIBRARY_PATH=$PWD/build/bin/opencv_libs:/usr/lib/x86_64-linux-gnu
351-
echo "LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
352-
353-
echo "### Checking binary execution permissions ###"
354-
ls -la "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
355-
file "${{ steps.set_eval_binary.outputs.EVAL_BINARY }}"
356-
357-
echo "### Testing direct execution ###"
358-
set +e
359-
"${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --version > version_output.txt 2>&1
360-
VERSION_EXIT_CODE=$?
361-
echo "Version command exit code: $VERSION_EXIT_CODE"
362-
cat version_output.txt
363-
364-
"${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --help > help_output.txt 2>&1
365-
HELP_EXIT_CODE=$?
366-
echo "Help command exit code: $HELP_EXIT_CODE"
367-
cat help_output.txt
368-
369-
echo "### Running MNIST evaluation ###"
370-
mkdir -p docs/mnist/mnist/test
371-
372-
"${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" --model alexnet_mnist > accuracy.txt 2>&1
373-
EVAL_EXIT_CODE=$?
374-
echo "Evaluation exit code: $EVAL_EXIT_CODE"
375-
376-
if [ $EVAL_EXIT_CODE -ne 0 ]; then
377-
echo "Trying without --model parameter..."
378-
"${{ steps.set_eval_binary.outputs.EVAL_BINARY }}" > accuracy.txt 2>&1
379-
EVAL_EXIT_CODE=$?
380-
echo "Fallback evaluation exit code: $EVAL_EXIT_CODE"
381-
fi
382-
383-
echo "### Evaluation output ###"
384-
cat accuracy.txt
385-
set -e
386-
387-
- name: Extract accuracy value
388-
run: |
389-
echo "### Extracting accuracy ###"
390-
ACCURACY=$(grep -oE '[0-9]+\.?[0-9]*%' accuracy.txt | head -1 || echo "0%")
391-
echo "Accuracy: $ACCURACY"
392-
echo "$ACCURACY" > accuracy_value.txt
393-
233+
build/bin/ACC > accuracy.txt
394234
- name: Update README (master only)
395235
if: github.ref == 'refs/heads/master'
396236
run: |
397-
ACCURACY=$(cat accuracy_value.txt | sed 's/%//g')
237+
ACCURACY=$(cat accuracy.txt | sed 's/%//g')
398238
DATE=$(date '+%Y-%m-%d')
399-
400-
echo "Updating README with:"
401-
echo "Accuracy: $ACCURACY%"
402-
echo "Date: $DATE"
403-
404239
sed -i "s/<!--ACCURACY_PLACEHOLDER-->.*<!--END_ACCURACY-->/<!--ACCURACY_PLACEHOLDER-->Accuracy: ${ACCURACY}% (updated: ${DATE})<!--END_ACCURACY-->/" README.md
405-
406-
echo "Updated README content:"
407-
grep -A 2 -B 2 "ACCURACY_PLACEHOLDER" README.md
408-
409240
- name: Commit and push changes (master only)
410241
if: github.ref == 'refs/heads/master'
411242
run: |
412243
git config --global user.name "GitHub Actions"
413244
git config --global user.email "actions@github.com"
414-
415245
git add README.md
416-
417246
if git diff-index --quiet HEAD --; then
418247
echo "No changes to commit"
419248
else
420-
git commit -m "[CI] Update accuracy: $(cat accuracy_value.txt)"
249+
git commit -m "[CI] Update accuracy: $(cat accuracy.txt)"
421250
git push origin master
422-
echo "Changes pushed to master branch"
423251
fi

0 commit comments

Comments
 (0)