@@ -2,24 +2,55 @@ version: 2
22jobs :
33 build :
44 docker :
5- - image : circleci/buildpack-deps:bionic
5+ - image : cimg/base:24.04
66 auth :
77 username : $DOCKERHUB_USERNAME
88 password : $DOCKERHUB_PASSWORD
99 steps :
1010 - checkout
1111 - run :
12- name : Clang-format test
12+ name : Ensure all submodules are updated recursively
13+ command : git submodule update --init --recursive
14+ - run :
15+ name : Clang-format and Clang-tidy test
1316 command : |
1417 set -o xtrace
15- curl -sSL "http://apt.llvm.org/llvm-snapshot.gpg.key" | sudo -E apt-key add -
16- echo "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-15 main" | sudo tee -a /etc/apt/sources.list > /dev/null
18+ UBUNTU_CODE_NAME="noble"
19+ BASE_BRANCH="8.0"
20+ COMPILER_VERSION="19"
21+ BOOST_VERSION="1_77_0"
22+ BOOST_DIR="/home/circleci/my_boost"
23+
1724 sudo -E apt-get -yq update >> ~/apt-get-update.log 2>&1
18- sudo -E apt-get -yq --no-install-suggests --no-install-recommends install clang-format-15
19- git diff -U0 --no-color HEAD^1 *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-format-diff-15 -style=file -p1 >_GIT_DIFF
25+ sudo apt-get install -yq --no-install-suggests --allow-unauthenticated --no-install-recommends clang-${COMPILER_VERSION} clang-tidy-${COMPILER_VERSION} clang-format-${COMPILER_VERSION} clang-tools-${COMPILER_VERSION} libc++-${COMPILER_VERSION}-dev libc++abi-${COMPILER_VERSION}-dev libldap2-dev curl libcurl4-openssl-dev bison libudev-dev libkrb5-dev libreadline-dev zlib1g-dev liblz4-dev libedit-dev libevent-dev protobuf-compiler libprotobuf-dev libprotoc-dev libldap2-dev libsasl2-dev libsasl2-modules-gssapi-mit cmake libicu-dev libtirpc-dev
26+
27+ echo "Downloading and extracting Boost."
28+ wget --progress=dot:giga -P ${BOOST_DIR} "https://archives.boost.io/release/${BOOST_VERSION//_/.}/source/boost_${BOOST_VERSION}.tar.gz"
29+ tar -xzf "${BOOST_DIR}/boost_${BOOST_VERSION}.tar.gz" -C "${BOOST_DIR}"
30+
31+ # Prepare compile_commands.json
32+ cd ~/project
33+ cmake -B /home/circleci/debug-build -DCMAKE_BUILD_TYPE=Debug -DWITH_BOOST=${BOOST_DIR} -DWITH_SSL=system -DWITH_AUTHENTICATION_LDAP=ON -DWITH_ROCKSDB=ON -DCMAKE_C_COMPILER=clang-${COMPILER_VERSION} -DCMAKE_CXX_COMPILER=clang++-${COMPILER_VERSION} -DCMAKE_CXX_FLAGS="-stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-stdlib=libc++" -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DWITH_SYSTEM_LIBS=ON -DWITH_FIDO=bundled -DWITH_ZSTD=bundled -DWITH_LZ4=bundled -DWITH_PROTOBUF=bundled ~/project
34+
35+ git remote add target "https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}"
36+ git fetch --no-tags --no-recurse-submodules target $BASE_BRANCH
37+
38+ echo "Checking clang-format results"
39+ git diff -U0 "$(git merge-base HEAD target/$BASE_BRANCH)" *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-format-diff-$COMPILER_VERSION -style=file -p1 >_GIT_DIFF || true
2040 if [ ! -s _GIT_DIFF ]; then
21- echo The last git commit is clang-formatted;
41+ echo The last git commit is clang-formatted;
42+ else
43+ cat _GIT_DIFF;
44+ false;
45+ fi
46+
47+ echo "Checking clang-tidy static code analysis results"
48+ git diff -U0 "$(git merge-base HEAD target/$BASE_BRANCH)" *.c *.cc *.cpp *.h *.hpp *.i *.ic *.ih | clang-tidy-diff-${COMPILER_VERSION}.py -clang-tidy-binary clang-tidy-${COMPILER_VERSION} -p1 -path /home/circleci/debug-build -export-fixes=fixes.yaml || true
49+ clang-apply-replacements-${COMPILER_VERSION} .
50+ git diff > _GIT_DIFF_TIDY
51+ if [ ! -s _GIT_DIFF_TIDY ]; then
52+ echo The last git commit is clang-tidy clean;
2253 else
23- cat _GIT_DIFF ;
24- false ;
54+ echo The last git commit has clang-tidy warnings ;
55+ cat _GIT_DIFF_TIDY ;
2556 fi
0 commit comments