From 0defe3186643e6f0e940ddc9cff91a9edf1a9b93 Mon Sep 17 00:00:00 2001 From: yangwei Date: Thu, 28 Nov 2024 14:12:47 +0800 Subject: 🐎 ci(optimize ci stage): parallel & matrix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab-ci.yml | 351 +++++++++++++++++---------------------------------------- 1 file changed, 105 insertions(+), 246 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 631fc0e..e0e3f47 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,18 +3,28 @@ variables: BUILD_PADDING_PREFIX: /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX/ INSTALL_PREFIX: "/opt/tsg/stellar" INSTALL_DEPENDENCY_LIBRARY: framework_env libfieldstat4-devel - MRZCPD: mrzcpd-corei7 - TESTING_VERSION_BUILD: 0 - BUILD_IMAGE_X86_64_ROCKY8: "git.mesalab.cn:7443/mesa_platform/build-env:rocky8-for-stellar" - BUILD_IMAGE_AARCH64_ROCKY9: "git.mesalab.cn:7443/mesa_platform/build-env:rocky9-aarch64" +stages: + - cppcheck + - build + - test + - upload + +.predefined_matrix_x86_64: &predefined_matrix_x86_64 + TAG: "tsg-os-builder-el8" + BUILD_IMAGE: "git.mesalab.cn:7443/mesa_platform/build-env:rocky8-for-stellar" + MRZCPD: "mrzcpd-corei7" + PULP3_REPO_NAME: "stellar-stable-x86_64.el8" + PULP3_DIST_NAME: "stellar-stable-x86_64.el8" + +.predefined_matrix_aarch64: &predefined_matrix_aarch64 + TAG: "tsg-os-builder-aarch64" + BUILD_IMAGE: "git.mesalab.cn:7443/mesa_platform/build-env:rocky9-aarch64" + MRZCPD: "mrzcpd" + PULP3_REPO_NAME: "stellar-stable-aarch64.el9" + PULP3_DIST_NAME: "stellar-stable-aarch64.el9" -stages: -- cppcheck -- build -- test -- upload .everything_before_script: &everything_before_script - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ @@ -25,269 +35,118 @@ stages: - source /etc/profile.d/mrzcpd.sh - source /etc/profile.d/framework.sh +.build_script: &build_script + - mkdir build || true + - cd build + - > + cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS + -DCMAKE_BUILD_TYPE=$BUILD_TYPE + -DASAN_OPTION=$ASAN_OPTION + -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX + .. + - make -j4 VERBOSE=1 + ############################################################################### # cppcheck ############################################################################### -.cppcheck_script: - variables: - BUILD_TYPE: Debug +cppcheck: stage: cppcheck + parallel: + matrix: + - <<: *predefined_matrix_x86_64 + - <<: *predefined_matrix_aarch64 + image: $BUILD_IMAGE + tags: + - $TAG script: - mkdir build; cd build; cmake3 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. - - > - cppcheck --project=compile_commands.json - --enable=all - --std=c++11 - --error-exitcode=1 - --suppress=unusedFunction - --suppress=missingInclude - --suppress=uselessAssignmentPtrArg - --suppress=unmatchedSuppression - --suppress=variableScope - --suppress=unreadVariable - --suppress=cstyleCast - --suppress=memleakOnRealloc - --suppress=constParameter - --suppress=uselessAssignmentArg - --suppress=uninitvar - --suppress=unusedStructMember - --suppress=funcArgOrderDifferent - --suppress=unreachableCode - --suppress=internalAstError - --suppress=integerOverflow - --suppress=*:${CI_PROJECT_DIR}/deps/* - --suppress=*:${CI_PROJECT_DIR}/infra/monitor/stellar-dump/* - --suppress=*:${CI_PROJECT_DIR}/decoders/lpi_plus/libprotoident/* - + - | + cppcheck --project=compile_commands.json \ + --enable=all \ + --std=c++11 \ + --error-exitcode=1 \ + --suppress=unusedFunction \ + --suppress=missingInclude \ + --suppress=uselessAssignmentPtrArg \ + --suppress=unmatchedSuppression \ + --suppress=variableScope \ + --suppress=unreadVariable \ + --suppress=cstyleCast \ + --suppress=memleakOnRealloc \ + --suppress=constParameter \ + --suppress=uselessAssignmentArg \ + --suppress=uninitvar \ + --suppress=unusedStructMember \ + --suppress=funcArgOrderDifferent \ + --suppress=unreachableCode \ + --suppress=internalAstError \ + --suppress=integerOverflow \ + --suppress=*:${CI_PROJECT_DIR}/deps/* \ + --suppress=*:${CI_PROJECT_DIR}/infra/monitor/stellar-dump/* \ + --suppress=*:${CI_PROJECT_DIR}/decoders/lpi_plus/libprotoident/* - -run_cppcheck_for_x86_64_rocky8: - extends: .cppcheck_script - image: $BUILD_IMAGE_X86_64_ROCKY8 - tags: - - tsg-os-builder-el8 - -run_cppcheck_for_aarch64_rocky9: - extends: .cppcheck_script - image: $BUILD_IMAGE_AARCH64_ROCKY9 - tags: - - tsg-os-builder-aarch64 ############################################################################### # build -############################################################################### -.build_before_script: +############################################################################### +build: stage: build - before_script: *everything_before_script - script: - - mkdir build || true - - cd build - - > - cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS - -DCMAKE_BUILD_TYPE=$BUILD_TYPE - -DASAN_OPTION=$ASAN_OPTION - -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX - -DVERSION_DAILY_BUILD=$TESTING_VERSION_BUILD .. - - make -j4 VERBOSE=1 - -.build_for_x86_64_rocky8: - image: $BUILD_IMAGE_X86_64_ROCKY8 - extends: .build_before_script - tags: - - tsg-os-builder-el8 - -branch_build_debug_for_x86_64_rocky8: - extends: .build_for_x86_64_rocky8 - variables: - BUILD_TYPE: Debug - except: - - /^develop-.*$/i - - /^release-.*$/i - - tags - -branch_build_release_for_x86_64_rocky8: - extends: .build_for_x86_64_rocky8 - variables: - BUILD_TYPE: RelWithDebInfo - except: - - /^develop-.*$/i - - /^release-.*$/i - - tags - -develop_build_debug_for_x86_64_rocky8: - extends: .build_for_x86_64_rocky8 - variables: - TESTING_VERSION_BUILD: 1 - BUILD_TYPE: Debug - #ASAN_OPTION: ADDRESS - only: - - /^develop-.*$/i - - /^release-.*$/i - -develop_build_release_for_x86_64_rocky8: - extends: .build_for_x86_64_rocky8 - variables: - TESTING_VERSION_BUILD: 1 - BUILD_TYPE: RelWithDebInfo - #ASAN_OPTION: ADDRESS - only: - - /^develop-.*$/i - - /^release-.*$/i - -release_build_debug_for_x86_64_rocky8: - extends: .build_for_x86_64_rocky8 - variables: - BUILD_TYPE: Debug - only: - - tags - -release_build_release_for_x86_64_rocky8: - extends: .build_for_x86_64_rocky8 - variables: - BUILD_TYPE: RelWithDebInfo - artifacts: - name: "stellar-release_build-$CI_COMMIT_REF_NAME-release" - paths: - - build/infra/*.rpm - expire_in: 1h - only: - - tags - -.build_for_aarch64_rocky9: - image: $BUILD_IMAGE_AARCH64_ROCKY9 - extends: .build_before_script - variables: - MRZCPD: mrzcpd + parallel: + matrix: + - <<: *predefined_matrix_x86_64 + - <<: *predefined_matrix_aarch64 + image: $BUILD_IMAGE tags: - - tsg-os-builder-aarch64 - -branch_build_debug_for_aarch64_rocky9: - extends: .build_for_aarch64_rocky9 - variables: - BUILD_TYPE: Debug - except: - - /^develop-.*$/i - - /^release-.*$/i - - tags - -branch_build_release_for_aarch64_rocky9: - extends: .build_for_aarch64_rocky9 - variables: - BUILD_TYPE: RelWithDebInfo - except: - - /^develop-.*$/i - - /^release-.*$/i - - tags - -develop_build_debug_for_aarch64_rocky9: - extends: .build_for_aarch64_rocky9 - variables: - TESTING_VERSION_BUILD: 1 - BUILD_TYPE: Debug - #ASAN_OPTION: ADDRESS - only: - - /^develop-.*$/i - - /^release-.*$/i - -develop_build_release_for_aarch64_rocky9: - extends: .build_for_aarch64_rocky9 - variables: - TESTING_VERSION_BUILD: 1 - BUILD_TYPE: RelWithDebInfo - #ASAN_OPTION: ADDRESS - only: - - /^develop-.*$/i - - /^release-.*$/i - -release_build_debug_for_aarch64_rocky9: - extends: .build_for_aarch64_rocky9 - variables: - BUILD_TYPE: Debug - only: - - tags - -release_build_release_for_aarch64_rocky9: - extends: .build_for_aarch64_rocky9 + - $TAG + before_script: *everything_before_script variables: - BUILD_TYPE: RelWithDebInfo + BUILD_TYPE: "RelWithDebInfo" + ASAN_OPTION: "OFF" + script: *build_script artifacts: - name: "stellar-release_build-$CI_COMMIT_REF_NAME-release" + name: "build-artifacts-${CI_COMMIT_REF_NAME}-${TAG}-${BUILD_TYPE}" paths: - build/infra/*.rpm - expire_in: 1h - only: - - tags - + when: on_success ############################################################################### # test ############################################################################### -.setup_test_env: +test: stage: test - allow_failure: false - before_script: *everything_before_script - script: - - mkdir build || true - - cd build - - > - cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS - -DCMAKE_BUILD_TYPE=$BUILD_TYPE - -DASAN_OPTION=$ASAN_OPTION - -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX - -DVERSION_DAILY_BUILD=$TESTING_VERSION_BUILD .. - - make -j4 VERBOSE=1 - -test_for_x86_64_rocky8: - extends: .setup_test_env - image: $BUILD_IMAGE_X86_64_ROCKY8 - dependencies: - - branch_build_release_for_x86_64_rocky8 - - develop_build_release_for_x86_64_rocky8 - - release_build_release_for_x86_64_rocky8 + parallel: + matrix: + - <<: *predefined_matrix_x86_64 + - <<: *predefined_matrix_aarch64 + image: $BUILD_IMAGE tags: - - tsg-os-builder-el8 - -test_for_aarch64_rocky9: - extends: .setup_test_env - image: $BUILD_IMAGE_AARCH64_ROCKY9 - variables: - MRZCPD: mrzcpd + - $TAG dependencies: - - branch_build_release_for_aarch64_rocky9 - - develop_build_release_for_aarch64_rocky9 - - release_build_release_for_aarch64_rocky9 - tags: - - tsg-os-builder-aarch64 + - build + before_script: *everything_before_script + variables: + BUILD_TYPE: "Debug" + ASAN_OPTION: "ADDRESS" + script: + - *build_script + - ctest -V ############################################################################### -# upload +# upload ############################################################################### -.define_before_upload: +upload: stage: upload + parallel: + matrix: + - <<: *predefined_matrix_x86_64 + - <<: *predefined_matrix_aarch64 + image: $BUILD_IMAGE + tags: + - $TAG + dependencies: + - build before_script: - pwd; ls -l ; cd build ; ls -l - cp /root/rpm_upload_tools.py ./ script: - - python3 rpm_upload_tools.py $PULP3_REPO_NAME $PULP3_DIST_NAME *.rpm - only: - - tags - -rpm_upload_for_x86_64_rocky8: - extends: .define_before_upload - image: $BUILD_IMAGE_X86_64_ROCKY8 - variables: - PULP3_REPO_NAME: stellar-stable-x86_64.el8 - PULP3_DIST_NAME: stellar-stable-x86_64.el8 - dependencies: - - release_build_release_for_x86_64_rocky8 - tags: - - tsg-os-builder-el8 - -rpm_upload_for_aarch64_rocky9: - extends: .define_before_upload - image: $BUILD_IMAGE_AARCH64_ROCKY9 - variables: - PULP3_REPO_NAME: stellar-stable-aarch64.el9 - PULP3_DIST_NAME: stellar-stable-aarch64.el9 - dependencies: - - release_build_release_for_aarch64_rocky9 - tags: - - tsg-os-builder-aarch64 \ No newline at end of file + - python3 rpm_upload_tools.py $PULP3_REPO_NAME $PULP3_DIST_NAME *.rpm + rules: + - if: $CI_COMMIT_TAG \ No newline at end of file -- cgit v1.2.3