diff options
Diffstat (limited to 'circle.yml')
-rw-r--r-- | circle.yml | 527 |
1 files changed, 488 insertions, 39 deletions
diff --git a/circle.yml b/circle.yml index 7d75427bcb..6ff8a84f87 100644 --- a/circle.yml +++ b/circle.yml @@ -1,31 +1,174 @@ version: 2 -jobs: +workflows: + version: 2 + default: + jobs: + - clang-tidy: + filters: + branches: + ignore: master + - android-debug-arm-v7 + - android-release-all + - node4-clang39-release + - node6-clang39-release + - node6-clang39-debug + - linux-clang39-debug + - linux-clang4-sanitize-address + - linux-clang4-sanitize-undefined + - linux-clang4-sanitize-thread + - linux-gcc4.9-debug + - linux-gcc5-debug-coverage + - linux-gcc5-release-qt4 + - linux-gcc5-release-qt5 + +step-library: + - &generate-cache-key + run: + name: Generate cache key + command: | + echo "$(date +"%Y-%V")" > .circle-week + ccache --clear + ccache --max-size=5G + - &restore-cache + restore_cache: + keys: + - 'v3/{{ .Environment.CIRCLE_JOB }}/{{ .Branch }}/{{ checksum ".circle-week" }}' + - 'v3/{{ .Environment.CIRCLE_JOB }}/master/{{ checksum ".circle-week" }}' + - &save-cache + save_cache: + key: 'v3/{{ .Environment.CIRCLE_JOB }}/{{ .Branch }}/{{ checksum ".circle-week" }}' + paths: [ "node_modules", "/root/.ccache", "mason_packages/.binaries" ] + + + - &reset-ccache-stats + run: + name: Clear ccache statistics + command: | + ccache --zero-stats + ccache --show-stats + - &show-ccache-stats + run: + name: Show ccache statistics + command: ccache --show-stats + + + - &setup-llvm-symbolizer + run: + name: Environment Setup + command: | + # LLVM has a hard check for "llvm-symbolizer" and doesn't support suffixed executables + ln -s /usr/bin/llvm-symbolizer-* /usr/bin/llvm-symbolizer + # We'll use tee to redirect stderr to a file so we can check for sanitiziation + # https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1059947 + sed -i 's/"$@" 2>&1/"$@"/' /usr/bin/xvfb-run + + + - &build-node + run: + name: Build node + command: make node + - &build-linux + run: + name: Build linux + command: make linux + - &build-benchmark + run: + name: Build benchmark + command: make benchmark + - &build-test + run: + name: Build test + command: make test + - &build-qt-app + run: + name: Build qt-app + command: make qt-app + - &build-qt-test + run: + name: Build qt-test + command: make qt-test + + - &run-node-tests + run: + name: Run node tests + command: | + xvfb-run --server-args="-screen 0 1024x768x24" \ + logbt -- apitrace trace --api=egl -v make test-node + - &run-node-tests-recycle-map + run: + name: Run node tests (recycling the map object) + command: | + xvfb-run --server-args="-screen 0 1024x768x24" \ + logbt -- apitrace trace --api=egl -v make test-node-recycle-map + - &run-unit-tests + run: + name: Run tests + command: | + xvfb-run --server-args="-screen 0 1024x768x24" \ + make run-test + + + - &publish-node-package + run: + name: Publish node package + when: on_success + command: platform/node/scripts/after_success.sh + + + - &upload-render-tests + store_artifacts: + path: mapbox-gl-js/test/integration/render-tests/index.html + destination: render-tests + - &upload-render-tests-recycle-map + store_artifacts: + path: mapbox-gl-js/test/integration/render-tests/index-recycle-map.html + destination: render-tests + +jobs: # ------------------------------------------------------------------------------ - build: + clang-tidy: docker: - - image: mbgl/ci:trigger_job - working_directory: / + - image: mbgl/ci:r4-linux-clang-3.9 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: Debug steps: - - deploy: - name: Trigger 'android-debug-arm-v7' - command: trigger_job android-debug-arm-v7 - - deploy: - name: Trigger 'android-release-all' - command: trigger_job android-release-all + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - run: + name: Fetch 'origin/master' branch + command: git fetch origin master:refs/remotes/origin/master + - run: + name: Generate compilation database + command: make compdb + - *show-ccache-stats + - *save-cache + - run: + name: Run Clang checks + command: make check # ------------------------------------------------------------------------------ android-debug-arm-v7: docker: - - image: mbgl/ci:r2-android-ndk-r13b-gradle + - image: mbgl/ci@sha256:c34e221294d81da80918d3e9a9df5de795b067e88f86d7c9a5e262763332536e + resource_class: large working_directory: /src environment: - LIBSYSCONFCPUS: 6 - JOBS: 6 + LIBSYSCONFCPUS: 4 + JOBS: 4 BUILDTYPE: Debug + IS_LOCAL_DEVELOPMENT: false steps: - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats - run: name: Build libmapbox-gl.so for arm-v7 command: make android-lib-arm-v7 @@ -36,19 +179,26 @@ jobs: name: Test phone module command: make run-android-unit-test - run: - name: Test wear module - command: make run-android-wear-unit-test - - run: name: Generate Espresso sanity tests command: make test-code-android - run: name: Check Java code style command: make android-checkstyle - run: + name: Check Android modules for potential bugs (Lint SDK) + command: | + make android-lint-sdk + - run: + name: Check Android modules for potential bugs (Lint Test App) + command: | + make android-lint-test-app + - run: name: Build Test APK command: | echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml make android-ui-test-arm-v7 + - *show-ccache-stats + - *save-cache - run: name: Log in to Google Cloud Platform shell: /bin/bash -euo pipefail @@ -58,14 +208,15 @@ jobs: rm secret.json - run: name: Run instrumentation tests on Firebase + no_output_timeout: 1200 shell: /bin/bash -euo pipefail command: | gcloud firebase test android models list (gcloud firebase test android run --type instrumentation \ --app platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug.apk \ --test platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/MapboxGLAndroidSDKTestApp-debug-androidTest.apk \ - --device-ids shamu --os-version-ids 22 --locales en --orientations portrait --timeout 15m \ - --test-targets "class com.mapbox.mapboxsdk.testapp.maps.widgets.LogoTest" 2>&1 | tee firebase.log) || EXIT_CODE=$? + --device-ids shamu --os-version-ids 22 --locales en --orientations portrait --timeout 20m \ + --test-targets "package com.mapbox.mapboxsdk.testapp.style" 2>&1 | tee firebase.log) || EXIT_CODE=$? FIREBASE_TEST_BUCKET=$(sed -n 's|^.*\[https://console.developers.google.com/storage/browser/\([^]]*\).*|gs://\1|p' firebase.log) echo "Downloading from: ${FIREBASE_TEST_BUCKET}" @@ -79,18 +230,35 @@ jobs: - store_artifacts: path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk destination: . + - store_artifacts: + path: platform/android/MapboxGLAndroidSDK/build/reports/lint-results.html + - store_artifacts: + path: platform/android/MapboxGLAndroidSDK/build/reports/lint-results.xml + - store_artifacts: + path: platform/android/MapboxGLAndroidSDK/lint-baseline.xml + - store_artifacts: + path: platform/android/MapboxGLAndroidSDKTestApp/build/reports/lint-results.html + - store_artifacts: + path: platform/android/MapboxGLAndroidSDKTestApp/build/reports/lint-results.xml + - store_artifacts: + path: platform/android/MapboxGLAndroidSDKTestApp/lint-baseline.xml # ------------------------------------------------------------------------------ android-release-all: docker: - - image: mbgl/ci:r2-android-ndk-r13b-gradle + - image: mbgl/ci@sha256:c34e221294d81da80918d3e9a9df5de795b067e88f86d7c9a5e262763332536e + resource_class: large working_directory: /src environment: - LIBSYSCONFCPUS: 6 - JOBS: 6 + LIBSYSCONFCPUS: 4 + JOBS: 4 BUILDTYPE: Release + IS_LOCAL_DEVELOPMENT: false steps: - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats - run: name: Generate Maven credentials shell: /bin/bash -euo pipefail @@ -102,26 +270,10 @@ jobs: signing.password=$SIGNING_PASSWORD signing.secretKeyRingFile=secring.gpg" >> platform/android/MapboxGLAndroidSDK/gradle.properties - run: - name: Build libmapbox-gl.so for arm-v7 - command: make android-lib-arm-v7 - - run: - name: Build libmapbox-gl.so for arm-v8 - command: make android-lib-arm-v8 - - run: - name: Build libmapbox-gl.so for arm-v5 - command: make android-lib-arm-v5 - - run: - name: Build libmapbox-gl.so for mips - command: make android-lib-mips - - run: - name: Build libmapbox-gl.so for x86 - command: make android-lib-x86 - - run: - name: Build libmapbox-gl.so for x86-64 - command: make android-lib-x86-64 - - run: name: Build package command: make apackage + - *show-ccache-stats + - *save-cache - store_artifacts: path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk destination: . @@ -134,3 +286,300 @@ jobs: name: Publish to Maven command: | if [ "${CIRCLE_BRANCH}" == "master" ]; then make run-android-upload-archives ; fi + + +# ------------------------------------------------------------------------------ + node4-clang39-release: + docker: + - image: mbgl/ci:r4-linux-clang-3.9-node-4 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: RelWithDebInfo + WITH_EGL: 1 + PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)") + PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-node + - *show-ccache-stats + - *save-cache + - *run-node-tests + - *publish-node-package + - *upload-render-tests + +# ------------------------------------------------------------------------------ + node6-clang39-release: + docker: + - image: mbgl/ci:r4-linux-clang-3.9 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: RelWithDebInfo + WITH_EGL: 1 + PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)") + PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-node + - *show-ccache-stats + - *save-cache + - *run-node-tests + - *publish-node-package + - *upload-render-tests + +# ------------------------------------------------------------------------------ + node6-clang39-debug: + docker: + - image: mbgl/ci:r4-linux-clang-3.9 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: Debug + WITH_EGL: 1 + PACKAGE_JSON_VERSION: $(node -e "console.log(require('./package.json').version)") + PUBLISH: $([[ "${CIRCLE_BRANCH}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-node + - *show-ccache-stats + - *save-cache + - *run-node-tests-recycle-map + - *publish-node-package + - *upload-render-tests-recycle-map + +# ------------------------------------------------------------------------------ + linux-clang39-debug: + docker: + - image: mbgl/ci:r4-linux-clang-3.9 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: Debug + WITH_EGL: 1 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-linux + - *build-benchmark + - *build-test + - *show-ccache-stats + - *save-cache + - *run-unit-tests + +# ------------------------------------------------------------------------------ + linux-clang4-sanitize-address: + docker: + - image: mbgl/ci:r4-linux-clang-4 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: Sanitize + WITH_EGL: 1 + GDB: '' # Do not run with GDB + CXXFLAGS: -fsanitize=address + LDFLAGS: -fsanitize=address + ASAN_OPTIONS: detect_leaks=0:color=always:print_summary=1 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *setup-llvm-symbolizer + - *build-test + - *show-ccache-stats + - *save-cache + - run: + name: Run tests + command: | + xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2) + # Unfortunately, Google Test eats the status code, so we'll have to check the output. + [ -z "$(sed -n '/^SUMMARY: AddressSanitizer:/p' sanitizer)" ] + +# ------------------------------------------------------------------------------ + linux-clang4-sanitize-undefined: + docker: + - image: mbgl/ci:r4-linux-clang-4 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: Sanitize + WITH_EGL: 1 + GDB: '' # Do not run with GDB + CXXFLAGS: -fsanitize=undefined + LDFLAGS: -fsanitize=undefined + UBSAN_OPTIONS: print_stacktrace=1:color=always:print_summary=1 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *setup-llvm-symbolizer + - *build-test + - *show-ccache-stats + - *save-cache + - run: + name: Run tests + command: | + xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2) + # Unfortunately, Google Test eats the status code, so we'll have to check the output. + [ -z "$(sed -n '/^SUMMARY: UndefinedBehaviorSanitizer:/p' sanitizer)" ] + +# ------------------------------------------------------------------------------ + linux-clang4-sanitize-thread: + docker: + - image: mbgl/ci:r4-linux-clang-4 + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 4 + BUILDTYPE: Sanitize + WITH_EGL: 1 + GDB: '' # Do not run with GDB + CXXFLAGS: -fsanitize=thread + LDFLAGS: -fsanitize=thread + TSAN_OPTIONS: color=always:print_summary=1 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *setup-llvm-symbolizer + - *build-test + - *show-ccache-stats + - *save-cache + - run: + name: Run tests + command: | + xvfb-run --server-args="-screen 0 1024x768x24" make run-test 2> >(tee sanitizer 1>&2) + # Unfortunately, Google Test eats the status code, so we'll have to check the output. + [ -z "$(sed -n '/^SUMMARY: ThreadSanitizer:/p' sanitizer)" ] + +# ------------------------------------------------------------------------------ + linux-gcc4.9-debug: + docker: + - image: mbgl/ci:r4-linux-gcc-4.9 + resource_class: large + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 2 + BUILDTYPE: Debug + WITH_EGL: 1 + WITH_CXX11ABI: 0 + DISPLAY: :0 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-linux + - *build-benchmark + - *build-test + - *show-ccache-stats + - *save-cache + - *run-unit-tests + +# ------------------------------------------------------------------------------ + linux-gcc5-debug-coverage: + docker: + - image: mbgl/ci:r4-linux-gcc-5 + resource_class: large + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 2 + BUILDTYPE: Debug + WITH_EGL: 1 + WITH_COVERAGE: 1 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-linux + - *build-benchmark + - *build-test + - *show-ccache-stats + - *save-cache + - *run-unit-tests + - run: + name: Upload coverage results to coveralls + command: | + platform/linux/scripts/coveralls.sh + +# ------------------------------------------------------------------------------ + linux-gcc5-release-qt4: + docker: + - image: mbgl/ci:r4-linux-gcc-5-qt-4 + resource_class: large + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 2 # OOM, causing the compiler to crash. + BUILDTYPE: Release + GTEST_OUTPUT: xml + LD_PRELOAD: /usr/lib/x86_64-linux-gnu/libjemalloc.so + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-qt-app + - *build-qt-test + - *show-ccache-stats + - *save-cache + - run: + name: Run memory-load tests + command: | + xvfb-run --server-args="-screen 0 1024x768x24" \ + make run-qt-test-Memory.*:*.Load + scripts/log_memory_benchmarks.sh test_detail.xml "Platform=Linux,Compiler=${_CC},Arch=$(uname -m)" + +# ------------------------------------------------------------------------------ + linux-gcc5-release-qt5: + docker: + - image: mbgl/ci:r4-linux-gcc-5-qt-5 + resource_class: large + working_directory: /src + environment: + LIBSYSCONFCPUS: 4 + JOBS: 2 # OOM, causing the compiler to crash. + BUILDTYPE: Release + WITH_QT_I18N: 1 + steps: + - checkout + - *generate-cache-key + - *restore-cache + - *reset-ccache-stats + - *build-qt-app + - *build-qt-test + - run: + name: Build qt-docs + command: make qt-docs + - *show-ccache-stats + - *save-cache + - run: + name: Run valgrind-backed tests + environment: + JOBS: 1 # https://github.com/mapbox/mapbox-gl-native/issues/9108 + command: | + xvfb-run --server-args="-screen 0 1024x768x24" \ + scripts/valgrind.sh build/qt-linux-x86_64/Release/mbgl-test --gtest_filter=-*.Load --gtest_filter=-Memory.Vector |