summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangwei <[email protected]>2024-11-28 14:12:47 +0800
committeryangwei <[email protected]>2024-11-28 14:25:59 +0800
commit0defe3186643e6f0e940ddc9cff91a9edf1a9b93 (patch)
treec3463a9f2a5069c5751e4223eb70e672bfb66454
parenta81bd301ab3a4c8cdf23b822f0a847754d532228 (diff)
🐎 ci(optimize ci stage): parallel & matrix
-rw-r--r--.gitlab-ci.yml351
1 files 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