From 171c219f64fdc294d9214b1276f8bd22868ce621 Mon Sep 17 00:00:00 2001 From: bgallois <benjamin@gallois.cc> Date: Wed, 15 Nov 2023 15:04:17 +0100 Subject: [PATCH] ci: add benchmark tests --- .gitlab-ci.yml | 15 +++++++++++++++ docker/Dockerfile | 13 ++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index baf3e9bc1..d9986b9df 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -185,6 +185,21 @@ build_release_tag: IMAGE_TAG: "$CI_COMMIT_TAG" PODMAN_BUILD_OPTIONS: "--platform linux/amd64" +run_benchmarks: + stage: tests + extends: .docker_build + rules: + - if: $CI_COMMIT_REF_NAME =~ /^wip*$/ + when: manual + - if: $CI_COMMIT_TAG + when: never + - if: '$CI_MERGE_REQUEST_ID || $CI_COMMIT_BRANCH == "master"' + - when: manual + variables: + IMAGE_NAME: "duniter/duniter-v2s-test" + IMAGE_TAG: "debug-sha-$CI_COMMIT_SHORT_SHA" + PODMAN_BUILD_OPTIONS: "--target build --build-arg benchmarks=1" + tests: stage: tests image: rust:1-bullseye diff --git a/docker/Dockerfile b/docker/Dockerfile index c30f042aa..943046a08 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -33,6 +33,11 @@ RUN if [ "$debug" = 0 ]; then \ echo "TARGET_FOLDER=debug" >>/root/dynenv; \ fi +ARG benchmarks=0 +RUN if [ "$benchmarks" != 0 ]; then \ + echo "BENCH_OPTIONS=runtime-benchmarks" >>/root/dynenv; \ + fi + # Configure cross-build environment if need be RUN set -x && \ if [ "$TARGETPLATFORM" != "$BUILDPLATFORM" ]; then \ @@ -48,7 +53,7 @@ ARG chain="gdev" RUN set -x && \ cat /root/dynenv && \ . /root/dynenv && \ - cargo build --locked $CARGO_OPTIONS --no-default-features --features $chain --target "$RUST_ARCH_TRIPLET" && \ + cargo build --locked $CARGO_OPTIONS --no-default-features --features $BENCH_OPTIONS $chain --target "$RUST_ARCH_TRIPLET" && \ mkdir -p build && \ mv target/$RUST_ARCH_TRIPLET/$TARGET_FOLDER/duniter build/ @@ -56,11 +61,17 @@ RUN set -x && \ ARG cucumber=0 RUN if [ "$cucumber" != 0 ] && [ "$TARGETPLATFORM" = "$BUILDPLATFORM" ]; then \ cargo ta && \ + cargo test --workspace --exclude duniter-end2end-tests --exclude duniter-live-tests --features runtime-benchmarks \ cd target/debug/deps/ && \ rm cucumber_tests-*.d && \ mv cucumber_tests* ../../../build/duniter-cucumber; \ fi +# Run runtime benchmarks +RUN if [ "$benchmarks" != 0 ]; then \ + build/duniter benchmark pallet --chain dev --execution=wasm --wasm-execution=compiled --pallet "*" --extrinsic "*" --steps 2 --repeat 1; \ + fi + # ------------------------------------------------------------------------------ # Final Stage # ------------------------------------------------------------------------------ -- GitLab