diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6d50724..3164145 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,30 +1,53 @@ -image: "git.mesalab.cn:7443/mesa_platform/build-env:master" variables: GIT_STRATEGY: "clone" BUILD_PADDING_PREFIX: /tmp/padding_for_CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX_PREFIX/ INSTALL_PREFIX: "/opt/tsg/tfe" TESTING_VERSION_BUILD: 0 + BUILD_IMAGE_CENTOS7: "git.mesalab.cn:7443/mesa_platform/build-env:master" + BUILD_IMAGE_CENTOS8: "git.mesalab.cn:7443/mesa_platform/build-env:rockylinux" stages: -- build -- envelope -- upload + - build + - envelope + - upload -.build_by_travis: +.build_before_script: before_script: - - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ - - ln -s $CI_PROJECT_DIR $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH - - cd $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH - - chmod +x ./ci/travis.sh - script: - - yum makecache - - ./ci/travis.sh - tags: - - share + - mkdir -p $BUILD_PADDING_PREFIX/$CI_PROJECT_NAMESPACE/ + - ln -s $CI_PROJECT_DIR $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH + - cd $BUILD_PADDING_PREFIX/$CI_PROJECT_PATH + - chmod +x ./ci/travis.sh + - yum makecache + - yum install -y elfutils-libelf-devel -branch_build_debug: +.build_by_travis_for_centos7: stage: build - extends: .build_by_travis + image: $BUILD_IMAGE_CENTOS7 + extends: .build_before_script + script: + - yum install -y libmnl-devel + - yum install -y libnfnetlink-devel + - ./ci/travis.sh + tags: + - share + +.build_by_travis_for_centos8: + stage: build + image: $BUILD_IMAGE_CENTOS8 + extends: .build_before_script + script: + - dnf --enablerepo=powertools install -y libmnl-devel + - dnf --enablerepo=powertools install -y libnfnetlink-devel + - ./ci/travis.sh + tags: + - share + +############################################################################### +# compile use image: build-env:master +############################################################################### + +branch_build_debug_for_centos7: + extends: .build_by_travis_for_centos7 variables: BUILD_TYPE: Debug except: @@ -32,24 +55,22 @@ branch_build_debug: - /^release-.*$/i - tags -branch_build_release: - stage: build +branch_build_release_for_centos7: variables: BUILD_TYPE: RelWithDebInfo - extends: .build_by_travis + extends: .build_by_travis_for_centos7 except: - /^develop-.*$/i - /^release-.*$/i - tags -develop_build_debug: - stage: build - extends: .build_by_travis +develop_build_debug_for_centos7: + extends: .build_by_travis_for_centos7 variables: TESTING_VERSION_BUILD: 1 UPLOAD_SYMBOL_FILES: 1 BUILD_TYPE: Debug - ASAN_OPTION: ADDRESS + # ASAN_OPTION: ADDRESS PACKAGE: 1 PULP3_REPO_NAME: tfe-testing-x86_64.el7 PULP3_DIST_NAME: tfe-testing-x86_64.el7 @@ -61,13 +82,12 @@ develop_build_debug: - /^develop-.*$/i - /^release-.*$/i -develop_build_release: - stage: build - extends: .build_by_travis +develop_build_release_for_centos7: + extends: .build_by_travis_for_centos7 variables: TESTING_VERSION_BUILD: 1 UPLOAD_SYMBOL_FILES: 1 - # ASAN_OPTION: ADDRESS + # ASAN_OPTION: ADDRESS BUILD_TYPE: RelWithDebInfo PACKAGE: 1 PULP3_REPO_NAME: tfe-testing-x86_64.el7 @@ -80,15 +100,14 @@ develop_build_release: - /^develop-.*$/i - /^release-.*$/i -release_build_debug: - stage: build +release_build_debug_for_centos7: variables: UPLOAD_SYMBOL_FILES: 1 BUILD_TYPE: Debug PACKAGE: 1 PULP3_REPO_NAME: tfe-stable-x86_64.el7 PULP3_DIST_NAME: tfe-stable-x86_64.el7 - extends: .build_by_travis + extends: .build_by_travis_for_centos7 artifacts: name: "tfe-install-$CI_COMMIT_REF_NAME-debug" paths: @@ -96,15 +115,14 @@ release_build_debug: only: - tags -release_build_release: - stage: build +release_build_release_for_centos7: variables: BUILD_TYPE: RelWithDebInfo UPLOAD_SYMBOL_FILES: 1 PACKAGE: 1 PULP3_REPO_NAME: tfe-stable-x86_64.el7 PULP3_DIST_NAME: tfe-stable-x86_64.el7 - extends: .build_by_travis + extends: .build_by_travis_for_centos7 artifacts: name: "tfe-install-$CI_COMMIT_REF_NAME-release" paths: @@ -112,36 +130,128 @@ release_build_release: only: - tags +############################################################################### +# compile use image: build-env:rockylinux +############################################################################### + +branch_build_debug_for_centos8: + extends: .build_by_travis_for_centos8 + variables: + BUILD_TYPE: Debug + except: + - /^develop-.*$/i + - /^release-.*$/i + - tags + +branch_build_release_for_centos8: + variables: + BUILD_TYPE: RelWithDebInfo + extends: .build_by_travis_for_centos8 + except: + - /^develop-.*$/i + - /^release-.*$/i + - tags + +develop_build_debug_for_centos8: + extends: .build_by_travis_for_centos8 + variables: + TESTING_VERSION_BUILD: 1 + UPLOAD_SYMBOL_FILES: 1 + BUILD_TYPE: Debug + # ASAN_OPTION: ADDRESS + PACKAGE: 1 + PULP3_REPO_NAME: tfe-testing-x86_64.el8 + PULP3_DIST_NAME: tfe-testing-x86_64.el8 + artifacts: + name: "tfe-develop-$CI_COMMIT_REF_NAME-debug" + paths: + - build/*.rpm + only: + - /^develop-.*$/i + - /^release-.*$/i + +develop_build_release_for_centos8: + extends: .build_by_travis_for_centos8 + variables: + TESTING_VERSION_BUILD: 1 + UPLOAD_SYMBOL_FILES: 1 + # ASAN_OPTION: ADDRESS + BUILD_TYPE: RelWithDebInfo + PACKAGE: 1 + PULP3_REPO_NAME: tfe-testing-x86_64.el8 + PULP3_DIST_NAME: tfe-testing-x86_64.el8 + artifacts: + name: "tfe-develop-$CI_COMMIT_REF_NAME-release" + paths: + - build/*.rpm + only: + - /^develop-.*$/i + - /^release-.*$/i + +release_build_debug_for_centos8: + variables: + UPLOAD_SYMBOL_FILES: 1 + BUILD_TYPE: Debug + PACKAGE: 1 + PULP3_REPO_NAME: tfe-stable-x86_64.el8 + PULP3_DIST_NAME: tfe-stable-x86_64.el8 + extends: .build_by_travis_for_centos8 + artifacts: + name: "tfe-install-$CI_COMMIT_REF_NAME-debug" + paths: + - build/*.rpm + only: + - tags + +release_build_release_for_centos8: + variables: + BUILD_TYPE: RelWithDebInfo + UPLOAD_SYMBOL_FILES: 1 + PACKAGE: 1 + PULP3_REPO_NAME: tfe-stable-x86_64.el8 + PULP3_DIST_NAME: tfe-stable-x86_64.el8 + extends: .build_by_travis_for_centos8 + artifacts: + name: "tfe-install-$CI_COMMIT_REF_NAME-release" + paths: + - build/*.rpm + only: + - tags + +############################################################################### +# envelope and upload +############################################################################### + envelope_rpm: stage: envelope + image: $BUILD_IMAGE_CENTOS7 variables: FEATURE_ID: 100 APP_NAME_IN_RPM_SPEC: tfe script: - - export RPM_FULL_PATH=`ls $CI_PROJECT_DIR/build/*.rpm | grep -v debug | grep -v debuginfo | grep -v devel | head -n 1` - - export BIN_TO_PROTECT_IN_RPM="${INSTALL_PREFIX}/bin/tfe" - - /root/rebuildrpm_and_envelope.sh $RPM_FULL_PATH $BIN_TO_PROTECT_IN_RPM $FEATURE_ID $APP_NAME_IN_RPM_SPEC - tags: - - envelope + - chmod +x ./ci/envelope_rpm.sh + - ./ci/envelope_rpm.sh artifacts: name: "tfe-pr-$CI_COMMIT_REF_NAME-release" paths: - build/*-pr-*.rpm + tags: + - envelope only: - tags - -upload_envelope_rpm: + +upload_enveloped_rpm: stage: upload + image: $BUILD_IMAGE_CENTOS7 variables: - PULP3_REPO_NAME: tfe-stable-x86_64.el7 - PULP3_DIST_NAME: tfe-stable-x86_64.el7 + PULP3_REPO_NAME_EL7: tfe-stable-x86_64.el7 + PULP3_DIST_NAME_EL7: tfe-stable-x86_64.el7 + PULP3_REPO_NAME_EL8: tfe-stable-x86_64.el8 + PULP3_DIST_NAME_EL8: tfe-stable-x86_64.el8 script: - - cd $CI_PROJECT_DIR/build/ - - ls -ahl *.rpm - - cp ~/rpm_upload_tools.py ./ - - python3 rpm_upload_tools.py ${PULP3_REPO_NAME} ${PULP3_DIST_NAME} *-pr-*.rpm - - rm -rf *.rpm + - chmod +x ./ci/upload_enveloped_rpm.sh + - ./ci/upload_enveloped_rpm.sh tags: - share only: - - tags + - tags \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 3f3a69d..e6067c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,8 @@ elseif(ENABLE_SANITIZE_THREAD) set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lasan") endif() +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lelf") + if(ENABLE_SANITIZE_ADDRESS AND ENABLE_SANITIZE_THREAD) message(WARNING "Both ENABLE_SANITIZE_ADDRESS and ENABLE_SANITIZE_THREAD set, only ENABLE_SANITIZE_ADDRESS effected.") endif() diff --git a/ci/envelope_rpm.sh b/ci/envelope_rpm.sh new file mode 100644 index 0000000..b4f0944 --- /dev/null +++ b/ci/envelope_rpm.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env sh + +ls $CI_PROJECT_DIR/build/*.rpm + +BIN_TO_PROTECT_IN_RPM="${INSTALL_PREFIX}/bin/tfe" +RPMS_FULL_PATH=`ls $CI_PROJECT_DIR/build/*.rpm | grep -v debug | grep -v devel` +echo "RPMS_TO_BE_ENVELOPE: " $RPMS_FULL_PATH + +for RPM in ${RPMS_FULL_PATH[@]} +do + echo "ENVELOPE: " $RPM + /root/rebuildrpm_and_envelope.sh $RPM $BIN_TO_PROTECT_IN_RPM $FEATURE_ID $APP_NAME_IN_RPM_SPEC +done \ No newline at end of file diff --git a/ci/travis.sh b/ci/travis.sh index 7744474..972e605 100644 --- a/ci/travis.sh +++ b/ci/travis.sh @@ -37,7 +37,6 @@ yum install -y mrzcpd numactl-devel zlib-devel librdkafka-devel systemd-devel yum install -y libcjson-devel libmaatframe-devel libMESA_field_stat2-devel libMESA_handle_logger-devel yum install -y libMESA_htable-devel libMESA_prof_load-devel librulescan-devel libwiredcfg-devel libWiredLB-devel sapp-devel libbreakpad_mini-devel yum install -y libasan -yum install -y libmnl-devel libnfnetlink-devel if [ $ASAN_OPTION ];then source /opt/rh/devtoolset-7/enable @@ -64,6 +63,7 @@ fi if [ -n "${UPLOAD_SYMBOL_FILES}" ]; then rpm -i tfe*debuginfo*.rpm - cp /usr/lib/debug/opt/tsg/tfe/bin/tfe.debug /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA} + ls -ahl /usr/lib/debug/opt/tsg/tfe/bin/ + cp /usr/lib/debug/opt/tsg/tfe/bin/tfe*debug /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA} sentry-cli upload-dif -t elf /tmp/tfe.debuginfo.${CI_COMMIT_SHORT_SHA} fi diff --git a/ci/upload_enveloped_rpm.sh b/ci/upload_enveloped_rpm.sh new file mode 100644 index 0000000..dd10318 --- /dev/null +++ b/ci/upload_enveloped_rpm.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env sh + +cd $CI_PROJECT_DIR/build/ +cp ~/rpm_upload_tools.py ./ + +ls -ahl *.rpm + +RPM_IS_EL7=`ls -ahl *-pr-*.rpm | grep el7 | wc -l` +RPM_IS_EL8=`ls -ahl *-pr-*.rpm | grep el8 | wc -l` + +if [ $RPM_IS_EL7 -eq 1 ] +then + echo "====== Upload the packed RPM package for CentOS7 ======" + python3 rpm_upload_tools.py ${PULP3_REPO_NAME_EL7} ${PULP3_DIST_NAME_EL7} *-pr-*el7*.rpm +fi + +if [ $RPM_IS_EL8 -eq 1 ] +then + echo "====== Upload the packed RPM package for CentOS8 ======" + python3 rpm_upload_tools.py ${PULP3_REPO_NAME_EL8} ${PULP3_DIST_NAME_EL8} *-pr-*el8*.rpm +fi + +rm -rf *.rpm \ No newline at end of file