diff options
Diffstat (limited to 'circle.yml')
-rw-r--r-- | circle.yml | 311 |
1 files changed, 308 insertions, 3 deletions
diff --git a/circle.yml b/circle.yml index 453aab85ac..61c4b03654 100644 --- a/circle.yml +++ b/circle.yml @@ -2,7 +2,133 @@ version: 2.1 workflows: version: 2 - default: + mbgl-next: + jobs: + - next-sanity-checks + - next-build-template: + name: next-android-armeabi-v7a-release + executor_name: ubuntu-disco + target_is_android: true + requires: + - next-sanity-checks + config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=armeabi-v7a' + - next-build-template: + name: next-android-arm64-v8a-release + executor_name: ubuntu-disco + target_is_android: true + requires: + - next-android-armeabi-v7a-release + config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=arm64-v8a' + - next-build-template: + name: next-android-x86-release + executor_name: ubuntu-disco + target_is_android: true + requires: + - next-android-armeabi-v7a-release + config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=x86' + - next-build-template: + name: next-android-x86_64-release + executor_name: ubuntu-disco + target_is_android: true + requires: + - next-android-armeabi-v7a-release + config_params: '-G Ninja -DCMAKE_TOOLCHAIN_FILE=/opt/android/ndk-bundle/build/cmake/android.toolchain.cmake -DANDROID_CCACHE=/usr/bin/ccache -DANDROID_ABI=x86_64' + - next-build-template: + name: next-linux-gcc8-release + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-sanity-checks + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8' + - next-build-template: + name: next-linux-gcc4.9-release + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-linux-gcc8-release + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-4.9 -DCMAKE_CXX_COMPILER=g++-4.9' + build_params: '--target mbgl-glfw' + test_params: '-N -Q' + - next-build-template: + name: next-linux-gcc8-debug-coverage + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-linux-gcc8-release + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_BUILD_TYPE=DebugCoverage' + - next-build-template: + name: next-linux-clang8-release + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-sanity-checks + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8' + - next-build-template: + name: next-linux-asan + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-linux-gcc8-debug-coverage + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=address' + - next-build-template: + name: next-linux-tsan + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-linux-gcc8-debug-coverage + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=thread' + - next-build-template: + name: next-linux-memsan + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-linux-gcc8-debug-coverage + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=memory' + - next-build-template: + name: next-linux-ubsan + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-linux-gcc8-debug-coverage + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=undefined' + - next-build-template: + name: next-qt5-linux-gcc5-release + executor_name: ubuntu-disco + target_is_linux: true + requires: + - next-sanity-checks + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=gcc-5 -DCMAKE_CXX_COMPILER=g++-5 -DMBGL_WITH_QT=ON' + - next-build-template: + name: next-qt5-macos-gcc5-release + executor_name: macos-11_0_0 + target_is_macos: true + requires: + - next-qt5-linux-gcc5-release + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DMBGL_WITH_QT=ON -DCMAKE_PREFIX_PATH=$(echo /usr/local/Cellar/qt/5.*/lib/cmake)' + test_params: '-N -Q' + - next-build-template: + name: next-macos-xcode11-release + executor_name: macos-11_0_0 + target_is_macos: true + requires: + - next-sanity-checks + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache' + - next-build-template: + name: next-macos-xcode11-debug + executor_name: macos-11_0_0 + target_is_macos: true + requires: + - next-macos-xcode11-release + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug' + - next-build-template: + name: next-ios-xcode11-release + executor_name: macos-11_0_0 + target_is_macos: true + requires: + - next-sanity-checks + config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_OSX_SYSROOT=iphonesimulator' + test_params: '-Q -N' + mbgl-legacy: jobs: # # Naming convention: {platform}-{additional description}-{build type} @@ -47,8 +173,6 @@ workflows: name: linux-clang-3.8-libcxx-debug - linux-clang-7-sanitize-address-undefined - linux-clang-7-sanitize-thread - - linux-gcc49-debug: - name: linux-gcc4.9-debug - linux-gcc5-debug-coverage - linux-doxygen - linux-render-tests @@ -83,7 +207,102 @@ workflows: - ios-static-analyzer-nightly - ios-static-analyzer-nightly-xcode11 +executors: + ubuntu-disco: + docker: + # FIXME: Move the image to mbgl/ + - image: tmpsantos/mbgl_ci:1.5 + resource_class: xlarge + working_directory: /src + environment: + UBSAN_OPTIONS: print_stacktrace=1:halt_on_error=1 + MSAN_OPTIONS: poison_in_dtor=1 + ASAN_OPTIONS: strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1 + QT_INSTALL_DOCS: /usr/share/qt5/doc + QT_VERSION: 5 + macos-11_0_0: + macos: + xcode: '11.0.0' + environment: + HOMEBREW_NO_AUTO_UPDATE: 1 + HOMEBREW_NO_INSTALL_CLEANUP: 1 + commands: + next-prepare: + steps: + - restore_cache: + keys: + - 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ .Revision }}' + - 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-' + - 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-master' + - 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-' + - run: + name: Prepare + command: | + git submodule sync + git submodule update --init --recursive + npm install --ignore-scripts + ulimit -c unlimited + next-prepare-macos: + steps: + - run: + name: Prepare macOS + command: | + brew install cmake ccache glfw ninja pkgconfig qt + next-config: + parameters: + config_params: + type: string + steps: + - run: + name: Configure + command: | + cmake next -B build << parameters.config_params >> + next-build: + parameters: + build_params: + type: string + steps: + - run: + name: Build + command: | + ccache --zero-stats --max-size=2G + cmake --build build -j 8 << parameters.build_params >> + ccache --show-stats + git gc + next-save: + steps: + - save_cache: + key: 'ccache-v1-{{ .Environment.CIRCLE_JOB }}-{{ .Branch }}-{{ .Revision }}' + paths: + - .git/modules + - /Users/distiller/Library/Caches/Homebrew + - node_modules + - ~/.ccache + - ~/.gradle + - run: + name: Collecting artifacts + when: on_fail + command: | + mkdir -p /tmp/tests/coredumps + if ls core* 1> /dev/null 2>&1; then cp core* /tmp/tests/coredumps; fi + mkdir -p /tmp/tests/render + if [ -f mapbox-gl-js/test/integration/render-tests/index.html ]; then cp mapbox-gl-js/test/integration/render-tests/index.html /tmp/tests/render; fi + - store_artifacts: + path: /tmp/tests + destination: tests + next-test: + parameters: + test_wrapper: + type: string + test_params: + type: string + steps: + - run: + name: Test + command: | + cd build + << parameters.test_wrapper >> ctest -j 8 --output-on-failure << parameters.test_params >> npm-install: steps: - run: @@ -516,6 +735,92 @@ commands: fi jobs: + next-sanity-checks: + executor: ubuntu-disco + steps: + - checkout + - next-prepare + - next-config: + config_params: '-DMBGL_WITH_CORE_ONLY=ON' + - run: + name: CMake Format + command: | + cmake-format -i $(find next -type f -name CMakeLists.txt -o -name '*.cmake') + git diff --exit-code + - run: + name: Clang Format + command: | + git diff -U0 --no-color origin/master... *.cpp *.hpp | clang-format-diff-8 -p1 -i + git diff --exit-code + - run: + name: Clang Tidy + command: | + git diff -U0 --no-color origin/master... src include | clang-tidy-diff-8.py -clang-tidy-binary clang-tidy-8 -p1 -path build + - run: + name: Code Generators + command: | + platform/android/scripts/generate-style-code.js + scripts/generate-file-lists.js + scripts/generate-shaders.js + scripts/generate-style-code.js + git add -A && git diff --staged --exit-code + - next-save + next-build-template: + parameters: + config_params: + type: string + default: '' + build_params: + type: string + default: '' + test_params: + type: string + default: '' + executor_name: + type: string + target_is_android: + type: boolean + default: false + target_is_linux: + type: boolean + default: false + target_is_macos: + type: boolean + default: false + executor: << parameters.executor_name >> + steps: + - checkout + - next-prepare + - when: + condition: << parameters.target_is_android >> + steps: + - next-config: + config_params: << parameters.config_params >> + - next-build: + build_params: << parameters.build_params >> + - when: + condition: << parameters.target_is_linux >> + steps: + - next-config: + config_params: << parameters.config_params >> + - next-build: + build_params: << parameters.build_params >> + - next-test: + test_wrapper: 'xvfb-run -s -noreset' + test_params: << parameters.test_params >> + - when: + condition: << parameters.target_is_macos >> + steps: + - next-prepare-macos + - next-config: + config_params: << parameters.config_params >> + - next-build: + build_params: << parameters.build_params >> + - next-test: + test_wrapper: '' + test_params: << parameters.test_params >> + - next-save + nitpick: docker: - image: mbgl/linux-clang-7:a5a3c52107 |