1version: 2.1 2 3commands: 4 linux-setup: 5 steps: 6 - run: sudo apt-get update 7 - run: sudo apt-get install -y cmake ${TOOLCHAIN_PACKAGES} 8 - run: sudo apt install libcmocka-dev 9 build: 10 steps: 11 - run: > 12 cmake -DWITH_TESTS=ON \ 13 -DCMAKE_BUILD_TYPE=Debug \ 14 -DSANITIZE=OFF \ 15 -DCOVERAGE="${CMAKE_COVERAGE:='OFF'}" \ 16 . 17 - run: make -j 16 VERBOSE=1 18 build-release: 19 steps: 20 - run: > 21 cmake -DWITH_TESTS=ON \ 22 -DCMAKE_BUILD_TYPE=Release \ 23 . 24 - run: make -j 16 VERBOSE=1 25 test: 26 steps: 27 - run: ctest -VV 28 29orbs: 30 codecov: codecov/codecov@3.2.2 31 32jobs: 33 static-test: 34 machine: 35 image: ubuntu-2204:2022.10.2 36 environment: 37 TOOLCHAIN_PACKAGES: g++ 38 steps: 39 - checkout 40 - linux-setup 41 - run: sudo apt-get install -y clang-format doxygen cppcheck 42 - run: cppcheck --inline-suppr --error-exitcode=1 . 43 - run: bash clang-format.sh --verbose 44 - run: > 45 if ! $(git diff-index --quiet HEAD); then 46 echo "Code formatting doesn't conform to clang-format" 47 echo "Please run clang-format.sh, commit the diff, and push to re-run CI" 48 echo "Excerpt of the diff follows" 49 git diff | head -n 20 50 fi 51 - run: > 52 if doxygen Doxyfile | grep 'warning: '; then 53 echo "Doxygen warning (see above) -- misformatted docs?" 54 exit 1 55 fi 56 - run: > 57 cd doc && 58 pip3 install -r source/requirements.txt && 59 make html 60 61 build-and-test: 62 machine: 63 image: ubuntu-2204:2022.10.2 64 environment: 65 TOOLCHAIN_PACKAGES: g++ 66 CMAKE_COVERAGE: ON 67 steps: 68 - checkout 69 - linux-setup 70 - run: sudo apt-get install -y valgrind 71 - build 72 - test 73 - run: ctest -T Coverage 74 - codecov/upload 75 - run: ctest --output-on-failure -T memcheck | tee memcheck.out 76 - run: > 77 if grep -q 'Memory Leak\|IPW\|Uninitialized Memory Conditional\|Uninitialized Memory Read' memcheck.out; then 78 cat Testing/Temporary/MemoryChecker* 79 exit 1 80 fi; 81 82 build-and-test-clang: 83 machine: 84 image: ubuntu-2204:2022.10.2 85 environment: 86 TOOLCHAIN_PACKAGES: clang 87 CC: clang 88 CXX: clang++ 89 steps: 90 - checkout 91 - linux-setup 92 - build 93 - test 94 95 build-and-test-32b: 96 machine: 97 image: ubuntu-2204:2022.10.2 98 steps: 99 - checkout 100 - run: sudo apt-get update 101 - run: sudo apt-get install -y cmake gcc-multilib g++-multilib libc6-dev-i386 102 # Make cmocka from source w/ 32b setup 103 - run: git clone https://git.cryptomilk.org/projects/cmocka.git ~/cmocka 104 - run: > 105 cd $(mktemp -d /tmp/build.XXXX) && 106 cmake ~/cmocka -DCMAKE_TOOLCHAIN_FILE=~/cmocka/cmake/Toolchain-cross-m32.cmake && 107 make && 108 sudo make install 109 # Piggyback on the cmocka 32b toolchain 110 - run: > 111 cmake -DWITH_TESTS=ON \ 112 -DCMAKE_BUILD_TYPE=Debug \ 113 -DCMAKE_TOOLCHAIN_FILE=~/cmocka/cmake/Toolchain-cross-m32.cmake \ 114 . 115 - run: make -j 16 VERBOSE=1 116 - test 117 118 build-and-test-release-clang: 119 machine: 120 image: ubuntu-2204:2022.10.2 121 environment: 122 TOOLCHAIN_PACKAGES: clang 123 CC: clang 124 CXX: clang++ 125 steps: 126 - checkout 127 - linux-setup 128 - build-release 129 - test 130 131 llvm-coverage: 132 machine: 133 image: ubuntu-2204:2022.10.2 134 environment: 135 TOOLCHAIN_PACKAGES: clang 136 CC: clang 137 CXX: clang++ 138 CMAKE_COVERAGE: ON 139 steps: 140 - checkout 141 - linux-setup 142 - build 143 - run: make llvm-coverage 144 145 146 build-and-test-arm: 147 machine: 148 image: ubuntu-2204:2022.10.2 149 environment: 150 TOOLCHAIN_PACKAGES: g++ 151 resource_class: arm.medium 152 steps: 153 - checkout 154 - linux-setup 155 - build 156 - test 157 158 build-bazel: 159 machine: 160 image: ubuntu-2204:2022.10.2 161 environment: 162 TOOLCHAIN_PACKAGES: g++ 163 steps: 164 - checkout 165 - linux-setup 166 - run: sudo apt install apt-transport-https curl gnupg 167 - run: curl -fsSL https://bazel.build/bazel-release.pub.gpg | gpg --dearmor > bazel.gpg 168 - run: sudo mv bazel.gpg /etc/apt/trusted.gpg.d/ 169 - run: echo "deb [arch=amd64] https://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list 170 - run: sudo apt update 171 - run: sudo apt install bazel 172 - run: bazel --version 173 - run: > 174 pushd examples/bazel && 175 bazel run -s src:hello 176 177 build-and-test-osx: 178 macos: 179 xcode: 12.5.1 180 steps: 181 - checkout 182 - run: bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 183 - run: brew install cmocka cmake 184 - build 185 - test 186 187 188 build-and-test-win: 189 resource_class: 'windows.medium' 190 machine: 191 image: 'windows-server-2022-gui:current' 192 shell: 'bash.exe' 193 steps: 194 - checkout 195 - run: choco install cmake -y 196 - run: git clone https://git.cryptomilk.org/projects/cmocka.git 197 - run: cd cmocka && git checkout tags/cmocka-1.1.5 198 - run: /c/Program\ Files/Cmake/bin/cmake -S cmocka -B cmocka_build 199 - run: /c/Program\ Files/Cmake/bin/cmake --build cmocka_build 200 - run: /c/Program\ Files/Cmake/bin/cmake -S . -B libcbor_build -DWITH_TESTS=ON -DCMOCKA_INCLUDE_DIR=cmocka/include -DCMOCKA_LIBRARIES=$(pwd)/cmocka_build/src/Debug/cmocka.lib 201 - run: /c/Program\ Files/Cmake/bin/cmake --build libcbor_build 202 - run: > 203 export PATH="$(pwd)/cmocka_build/src/Debug/:$PATH" && 204 /c/Program\ Files/Cmake/bin/ctest.exe --test-dir libcbor_build --output-on-failure 205 206workflows: 207 build-and-test: 208 jobs: 209 - static-test 210 - build-and-test 211 - build-and-test-clang 212 - build-and-test-32b 213 - build-and-test-release-clang 214 - build-and-test-arm 215 - build-and-test-win 216 - build-bazel 217 - llvm-coverage 218 # OSX builds are expensive, run only on master 219 - build-and-test-osx: 220 requires: 221 - build-and-test 222 filters: 223 branches: 224 only: [master] 225