From 30d48c71a3140c3c3d05e35ad65529b47b441b5f Mon Sep 17 00:00:00 2001 From: Anton Bondarenko Date: Thu, 20 Jun 2024 23:49:51 +0200 Subject: [PATCH 1/6] Improve CI pipelines * Prepare and upload JUnit report for tests execution * Move out common part for build and unit test artifacts * Simplify pre-commit job * Replace dependencies with needs to unblock jobs Signed-off-by: Anton Bondarenko --- .gitlab-ci.yml | 64 ++++++++++++++++++++++++++++---------------------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b7658016..addff567 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -14,6 +14,7 @@ default: image: registry.gitlab.arm.com/kleidi/kleidiai/image:latest tags: - arm64 + interruptible: true .standard-rules: rules: @@ -24,36 +25,44 @@ workflow: auto_cancel: on_new_commit: interruptible +.default-build-artifacts: + artifacts: + expire_in: 1 day + paths: + - build/kleidiai_test + - build/libkleidiai.a + +.default-test-artifacts: + artifacts: + when: always + expire_in: 1 day + paths: + - kleidiai_test_results.xml + reports: + junit: kleidiai_test_results.xml + build-clang: extends: - .standard-rules - interruptible: true + - .default-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -S . -B build/ - cmake --build ./build - artifacts: - expire_in: 1 day - paths: - - "build/" build-clang-cov: extends: - .standard-rules - interruptible: true + - .default-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -DCMAKE_C_FLAGS="--coverage" -DCMAKE_CXX_FLAGS="--coverage" -S . -B build - cmake --build ./build - artifacts: - expire_in: 1 day - paths: - - "build" build-gcc: extends: - .standard-rules - interruptible: true + - .default-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -S . -B build/ @@ -62,7 +71,6 @@ build-gcc: clang-tidy-checks: extends: - .standard-rules - interruptible: true stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -DKLEIDIAI_ENABLE_CLANG_TIDY=ON -S . -B build/ @@ -71,32 +79,33 @@ clang-tidy-checks: pre-commit-hooks: extends: - .standard-rules - interruptible: true stage: build - before_script: - - pre-commit install + cache: + - key: cache-pre-commit + paths: + - $XDG_CACHE_HOME/pre-commit script: - pre-commit run --all-files test-linux-aarch64: extends: - .standard-rules - interruptible: true + - .default-test-artifacts stage: test - dependencies: + needs: - build-clang script: - - ./build/kleidiai_test --gtest_filter=*:-*sme* + - ./build/kleidiai_test --gtest_filter=*:-*sme* --gtest_output=xml:kleidiai_test_results.xml test-linux-aarch64-cov: extends: - .standard-rules - interruptible: true + - .default-test-artifacts stage: test - dependencies: + needs: - build-clang-cov script: - - ./build/kleidiai_test --gtest_filter=*:-*sme* + - ./build/kleidiai_test --gtest_filter=*:-*sme* --gtest_output=xml:kleidiai_test_results.xml - mkdir -p build/coverage - gcovr --gcov-executable="llvm-cov gcov" --exclude-unreachable-branches --exclude=build --exclude=test --exclude-lines-by-pattern=".*KAI_(?:ASSERT|ASSUME|ERROR).*" --exclude-branches-by-pattern=".*KAI_(?:ASSERT|ASSUME).*" --json=build/coverage/linux-aarch64.json -j --root . build artifacts: @@ -107,9 +116,9 @@ test-linux-aarch64-cov: test-linux-aarch64-cov-fvp: extends: - .standard-rules - interruptible: true + - .default-test-artifacts stage: test - dependencies: + needs: - build-clang-cov script: - tar xJf /opt/devtools/linux-rootfs.img.xz @@ -122,7 +131,7 @@ test-linux-aarch64-cov-fvp: cd '$PWD' mkdir -p artifacts - GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* && echo 'FINISHED WITHOUT ERROR' + GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' tar cf artifacts.tar -C artifacts . sync @@ -180,6 +189,7 @@ test-linux-aarch64-cov-fvp: |& tee output.txt - grep -q "FINISHED WITHOUT ERROR" output.txt - e2cp linux-rootfs.img:"$PWD/artifacts.tar" . + - e2cp linux-rootfs.img:"$PWD/kleidiai_test_results.xml" . - tar xf artifacts.tar -C / - mkdir -p build/coverage - gcovr --gcov-executable="llvm-cov gcov" --exclude-unreachable-branches --exclude=build --exclude=test --exclude-lines-by-pattern=".*KAI_(?:ASSERT|ASSUME|ERROR).*" --exclude-branches-by-pattern=".*KAI_(?:ASSERT|ASSUME).*" --json=build/coverage/linux-aarch64-fvp.json -j --root . build @@ -191,9 +201,8 @@ test-linux-aarch64-cov-fvp: coverage: extends: - .standard-rules - interruptible: true stage: analyze - dependencies: + needs: - test-linux-aarch64-cov - test-linux-aarch64-cov-fvp script: @@ -212,9 +221,8 @@ coverage: pages: rules: - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - interruptible: true stage: deploy - dependencies: + needs: - coverage script: - pwd > /dev/null -- GitLab From f60bf149cf222bbf4a9fce31ab4197b67b0f554e Mon Sep 17 00:00:00 2001 From: Anton Bondarenko Date: Mon, 24 Jun 2024 11:21:27 +0200 Subject: [PATCH 2/6] fix review comments !47 Signed-off-by: Anton Bondarenko --- .gitlab-ci.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index addff567..1c916529 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,11 @@ workflow: expire_in: 1 day paths: - build/kleidiai_test - - build/libkleidiai.a + +.coverage-build-artifacts: + artifacts: + paths: + - build/**/*.gcno .default-test-artifacts: artifacts: @@ -54,6 +58,7 @@ build-clang-cov: extends: - .standard-rules - .default-build-artifacts + - .coverage-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -DCMAKE_C_FLAGS="--coverage" -DCMAKE_CXX_FLAGS="--coverage" -S . -B build @@ -77,13 +82,15 @@ clang-tidy-checks: - cmake --build ./build pre-commit-hooks: + variables: + PRE_COMMIT_HOME: '/cache/pre-commit' extends: - .standard-rules stage: build cache: - key: cache-pre-commit paths: - - $XDG_CACHE_HOME/pre-commit + - $PRE_COMMIT_HOME script: - pre-commit run --all-files @@ -131,8 +138,8 @@ test-linux-aarch64-cov-fvp: cd '$PWD' mkdir -p artifacts - GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' - tar cf artifacts.tar -C artifacts . + GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:artifacts/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' + tar cvf artifacts.tar -C artifacts . sync echo '==================================================' @@ -189,8 +196,7 @@ test-linux-aarch64-cov-fvp: |& tee output.txt - grep -q "FINISHED WITHOUT ERROR" output.txt - e2cp linux-rootfs.img:"$PWD/artifacts.tar" . - - e2cp linux-rootfs.img:"$PWD/kleidiai_test_results.xml" . - - tar xf artifacts.tar -C / + - tar xvf artifacts.tar -C / - mkdir -p build/coverage - gcovr --gcov-executable="llvm-cov gcov" --exclude-unreachable-branches --exclude=build --exclude=test --exclude-lines-by-pattern=".*KAI_(?:ASSERT|ASSUME|ERROR).*" --exclude-branches-by-pattern=".*KAI_(?:ASSERT|ASSUME).*" --json=build/coverage/linux-aarch64-fvp.json -j --root . build artifacts: -- GitLab From b946a279558466284aca9f97750a982a40a0eb2b Mon Sep 17 00:00:00 2001 From: Anton Bondarenko Date: Mon, 24 Jun 2024 11:31:14 +0200 Subject: [PATCH 3/6] fix review comments !47 p2 Signed-off-by: Anton Bondarenko --- .gitlab-ci.yml | 57 +++++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1c916529..407ba11e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,53 +25,42 @@ workflow: auto_cancel: on_new_commit: interruptible -.default-build-artifacts: - artifacts: - expire_in: 1 day - paths: - - build/kleidiai_test - -.coverage-build-artifacts: - artifacts: - paths: - - build/**/*.gcno - -.default-test-artifacts: - artifacts: - when: always - expire_in: 1 day - paths: - - kleidiai_test_results.xml - reports: - junit: kleidiai_test_results.xml - build-clang: extends: - .standard-rules - - .default-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -S . -B build/ - cmake --build ./build + artifacts: + expire_in: 1 day + paths: + - build/kleidiai_test build-clang-cov: extends: - .standard-rules - - .default-build-artifacts - - .coverage-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -DCMAKE_C_FLAGS="--coverage" -DCMAKE_CXX_FLAGS="--coverage" -S . -B build - cmake --build ./build + artifacts: + expire_in: 1 day + paths: + - build/kleidiai_test + - build/**/*.gcno build-gcc: extends: - .standard-rules - - .default-build-artifacts stage: build script: - cmake -G Ninja -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_BUILD_TYPE=Release -DKLEIDIAI_BUILD_TESTS=ON -S . -B build/ - cmake --build ./build + artifacts: + expire_in: 1 day + paths: + - build/kleidiai_test clang-tidy-checks: extends: @@ -97,17 +86,22 @@ pre-commit-hooks: test-linux-aarch64: extends: - .standard-rules - - .default-test-artifacts stage: test needs: - build-clang script: - ./build/kleidiai_test --gtest_filter=*:-*sme* --gtest_output=xml:kleidiai_test_results.xml + artifacts: + when: always + expire_in: 1 day + paths: + - kleidiai_test_results.xml + reports: + junit: kleidiai_test_results.xml test-linux-aarch64-cov: extends: - .standard-rules - - .default-test-artifacts stage: test needs: - build-clang-cov @@ -118,12 +112,14 @@ test-linux-aarch64-cov: artifacts: expire_in: 1 day paths: - - "build/coverage/linux-aarch64.json" + - build/coverage/linux-aarch64.json + - kleidiai_test_results.xml + reports: + junit: kleidiai_test_results.xml test-linux-aarch64-cov-fvp: extends: - .standard-rules - - .default-test-artifacts stage: test needs: - build-clang-cov @@ -202,7 +198,10 @@ test-linux-aarch64-cov-fvp: artifacts: expire_in: 1 day paths: - - "build/coverage/linux-aarch64-fvp.json" + - build/coverage/linux-aarch64-fvp.json + - kleidiai_test_results.xml + reports: + junit: kleidiai_test_results.xml coverage: extends: -- GitLab From eb0989f48915af7a436bb36b7102ebf94c062b54 Mon Sep 17 00:00:00 2001 From: Anton Bondarenko Date: Mon, 1 Jul 2024 11:54:11 +0200 Subject: [PATCH 4/6] fix review comments !47 p3 Signed-off-by: Anton Bondarenko --- .gitlab-ci.yml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 407ba11e..09d7bacb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -47,8 +47,7 @@ build-clang-cov: artifacts: expire_in: 1 day paths: - - build/kleidiai_test - - build/**/*.gcno + - build build-gcc: extends: @@ -60,7 +59,7 @@ build-gcc: artifacts: expire_in: 1 day paths: - - build/kleidiai_test + - build clang-tidy-checks: extends: -- GitLab From f447659221a1e6225fa67bd15cef60d684bdee96 Mon Sep 17 00:00:00 2001 From: Anton Bondarenko Date: Mon, 1 Jul 2024 12:47:40 +0200 Subject: [PATCH 5/6] improve FVP test report !47 p4 Signed-off-by: Anton Bondarenko --- .gitlab-ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 09d7bacb..5ad7df65 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -59,7 +59,7 @@ build-gcc: artifacts: expire_in: 1 day paths: - - build + - build/kleidiai_test clang-tidy-checks: extends: @@ -132,8 +132,8 @@ test-linux-aarch64-cov-fvp: echo '==================================================' cd '$PWD' - mkdir -p artifacts - GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:artifacts/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' + mkdir -p artifacts/$CI_BUILDS_DIR/$CI_PROJECT_DIR + GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:artifacts/$CI_BUILDS_DIR/$CI_PROJECT_DIR/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' tar cvf artifacts.tar -C artifacts . sync -- GitLab From 8d2c92c968d4a99553f1d98be03712502aa2f64b Mon Sep 17 00:00:00 2001 From: Anton Bondarenko Date: Mon, 1 Jul 2024 13:58:05 +0200 Subject: [PATCH 6/6] improve FVP test report !47 p5 Signed-off-by: Anton Bondarenko --- .gitlab-ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 5ad7df65..69e27e03 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -132,8 +132,8 @@ test-linux-aarch64-cov-fvp: echo '==================================================' cd '$PWD' - mkdir -p artifacts/$CI_BUILDS_DIR/$CI_PROJECT_DIR - GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:artifacts/$CI_BUILDS_DIR/$CI_PROJECT_DIR/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' + mkdir -p artifacts/$CI_PROJECT_DIR + GCOV_PREFIX=artifacts ./build/kleidiai_test --gtest_filter=*sme* --gtest_output=xml:artifacts/$CI_PROJECT_DIR/kleidiai_test_results.xml && echo 'FINISHED WITHOUT ERROR' tar cvf artifacts.tar -C artifacts . sync -- GitLab