summaryrefslogtreecommitdiff
path: root/circle.yml
diff options
context:
space:
mode:
Diffstat (limited to 'circle.yml')
-rw-r--r--circle.yml884
1 files changed, 614 insertions, 270 deletions
diff --git a/circle.yml b/circle.yml
index 9354a6d854..4a1c22c305 100644
--- a/circle.yml
+++ b/circle.yml
@@ -4,69 +4,258 @@ workflows:
version: 2
default:
jobs:
- - clang-tidy
+ - 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
+ - node4-clang39-release:
+ filters:
+ tags:
+ only: /node-.*/
+ - node6-clang39-release:
+ filters:
+ tags:
+ only: /node-.*/
+ - node6-gcc6-debug:
+ filters:
+ tags:
+ only: /node-.*/
+ - linux-clang-3.8-libcxx-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
+ - ios-debug
+ #- ios-sanitize-address
+ - ios-sanitize-thread
+ - macos-debug
+ - macos-debug-qt5
+ - macos-release-node4:
+ filters:
+ tags:
+ only: /node-.*/
+ - macos-release-node6:
+ filters:
+ tags:
+ only: /node-.*/
+
+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 }}/{{ arch }}/{{ .Branch }}/{{ checksum ".circle-week" }}'
+ - 'v3/{{ .Environment.CIRCLE_JOB }}/{{ arch }}/master/{{ checksum ".circle-week" }}'
+ - &save-cache
+ save_cache:
+ key: 'v3/{{ .Environment.CIRCLE_JOB }}/{{ arch }}/{{ .Branch }}/{{ checksum ".circle-week" }}'
+ paths: [ "node_modules", "/root/.ccache", "~/.ccache", "mason_packages/.binaries" ]
+
+
+ - &restore-gradle-cache
+ restore_cache:
+ keys:
+ - 'v3/{{ checksum "platform/android/dependencies.gradle" }}/{{ checksum "platform/android/build.gradle" }}/{{ checksum "platform/android/gradle/wrapper/gradle-wrapper.properties" }}'
+ - &save-gradle-cache
+ save_cache:
+ key: 'v3/{{ checksum "platform/android/dependencies.gradle" }}/{{ checksum "platform/android/build.gradle" }}/{{ checksum "platform/android/gradle/wrapper/gradle-wrapper.properties" }}'
+ paths: [ "/root/.gradle" ]
+
+ - &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
+ - &build-ios-test
+ run:
+ name: Build ios-test
+ command: make ios-test
+ - &build-macos-test
+ run:
+ name: Build and run macOS tests
+ command: make run-test
+
+
+ - &check-public-symbols
+ run:
+ name: Check public symbols
+ command: make check-public-symbols
+
+
+ - &install-macos-dependencies
+ run:
+ name: Install macOS dependencies
+ command: |
+ brew install cmake
+ brew install ccache
+
+ - &install-macos-node4-dependencies
+ run:
+ name: Install macOS Node@4 dependencies
+ command: |
+ brew install node@4
+ brew link node@4 --force --overwrite
+
+ - &install-macos-node6-dependencies
+ run:
+ name: Install macOS Node@6 dependencies
+ command: |
+ brew install node@6
+ brew link node@6 --force --overwrite
+
+ - &install-macos-qt-dependencies
+ run:
+ name: Install macOS Qt dependencies
+ command: |
+ sudo chown -R $USER /usr/local
+ brew install qt
+ brew link qt --force
+ brew linkapps qt
+ export HOMEBREW_QT5_CELLAR=$(brew --cellar qt)
+ export HOMEBREW_QT5_VERSION=$(brew list --versions qt | rev | cut -d' ' -f1 | rev)
+ ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/mkspecs /usr/local/mkspecs
+ ln -s $HOMEBREW_QT5_CELLAR/$HOMEBREW_QT5_VERSION/plugins /usr/local/plugins
+
+ - &run-node-macos-tests
+ run:
+ name: Run node tests
+ command: make test-node
+
+ - &run-node-linux-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-linux-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
-jobs:
+ - &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:
# ------------------------------------------------------------------------------
clang-tidy:
docker:
- - image: mbgl/ci:r3-linux-clang-3.9
+ - image: mbgl/7d2403f42e:linux-clang-3.9
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Debug
- branches:
- ignore:
- - master
steps:
- checkout
- - restore_cache:
- key: v1-clang-tidy
- paths:
- - node_modules
- - /root/.ccache
+ - *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
- - save_cache:
- key: v1-clang-tidy
- paths:
- - node_modules
- - /root/.ccache
# ------------------------------------------------------------------------------
android-debug-arm-v7:
docker:
- - image: mbgl/ci:r3-android-ndk-r15-gradle
+ - image: mbgl/7d2403f42e:android-ndk-r16b
+ resource_class: large
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Debug
+ IS_LOCAL_DEVELOPMENT: false
steps:
- checkout
- - restore_cache:
- key: v1-android-debug-arm-v7
- paths:
- - node_modules
- - /root/.ccache
+ - *generate-cache-key
+ - *restore-cache
+ - *restore-gradle-cache
+ - *reset-ccache-stats
- run:
name: Build libmapbox-gl.so for arm-v7
command: make android-lib-arm-v7
@@ -77,19 +266,27 @@ 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
+ - *save-gradle-cache
- run:
name: Log in to Google Cloud Platform
shell: /bin/bash -euo pipefail
@@ -99,49 +296,58 @@ 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=$?
+ --app platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/debug/MapboxGLAndroidSDKTestApp-debug.apk \
+ --test platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/androidTest/debug/MapboxGLAndroidSDKTestApp-debug-androidTest.apk \
+ --device-ids shamu --os-version-ids 22 --locales en --orientations portrait --timeout 20m \
+ 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}"
- gsutil -m cp -n -R -Z "$FIREBASE_TEST_BUCKET*" platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
+ gsutil -m cp -n -R -Z "$FIREBASE_TEST_BUCKET*" platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/debug
echo "Try running ndk-stack on downloaded logcat to symbolicate the stacktraces:"
- find platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk -type f -name "logcat" -print0 | \
+ find platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/debug -type f -name "logcat" -print0 | \
xargs -0 -I '{}' ${ANDROID_NDK_HOME}/ndk-stack -sym build/android-arm-v7/Debug -dump {}
exit ${EXIT_CODE:-0}
- - save_cache:
- key: v1-android-debug-arm-v7
- paths:
- - node_modules
- - /root/.ccache
- store_artifacts:
- path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
+ path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/debug
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:r3-android-ndk-r15-gradle
+ - image: mbgl/7d2403f42e:android-ndk-r16b
+ resource_class: large
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Release
+ IS_LOCAL_DEVELOPMENT: false
steps:
- checkout
- - restore_cache:
- key: v1-android-release-all
- paths:
- - node_modules
- - /root/.ccache
+ - *generate-cache-key
+ - *restore-cache
+ - *restore-gradle-cache
+ - *reset-ccache-stats
- run:
name: Generate Maven credentials
shell: /bin/bash -euo pipefail
@@ -155,8 +361,11 @@ jobs:
- run:
name: Build package
command: make apackage
+ - *show-ccache-stats
+ - *save-cache
+ - *save-gradle-cache
- store_artifacts:
- path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk
+ path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/release
destination: .
- deploy:
name: Show statistics
@@ -166,311 +375,446 @@ jobs:
- deploy:
name: Publish to Maven
command: |
- if [ "${CIRCLE_BRANCH}" == "release-ios-v3.6.0-android-v5.1.0" ]; then make run-android-upload-archives ; fi
- - save_cache:
- key: v1-android-release-all
- paths:
- - node_modules
- - /root/.ccache
+ if [ "${CIRCLE_BRANCH}" == "master" ]; then make run-android-upload-archives ; fi
+
# ------------------------------------------------------------------------------
node4-clang39-release:
docker:
- - image: mbgl/ci:r3-linux-clang-3.9-node-4
+ - image: mbgl/7d2403f42e:linux-clang-3.9-node-4
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
- BUILDTYPE: Release
+ 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)
- DISPLAY: :0
+ WITH_CXX11ABI: 0
steps:
- checkout
- - restore_cache:
- key: v1-node4-clang39-release
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build node
- command: make node
- - run:
- name: Run node tests
- command: |
- source scripts/circle_setup.sh
- mapbox_install_logbt
- mapbox_install_apitrace
- mapbox_export_mesa_library_path
- xvfb-run --server-args="-screen 0 1024x768x24" \
- ./logbt -- apitrace trace --api=egl -v make test-node
- - run:
- name: Publish node package
- when: on_success
- command: platform/node/scripts/after_success.sh
- - save_cache:
- key: v1-node4-clang39-release
- paths:
- - node_modules
- - /root/.ccache
- - store_artifacts:
- path: mapbox-gl-js/test/integration/render-tests/index.html
- destination: render-tests
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *save-cache
+ - *run-node-linux-tests
+ - *publish-node-package
+ - *upload-render-tests
# ------------------------------------------------------------------------------
node6-clang39-release:
docker:
- - image: mbgl/ci:r3-linux-clang-3.9
+ - image: mbgl/7d2403f42e:linux-clang-3.9
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
- BUILDTYPE: Release
+ 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)
- DISPLAY: :0
+ WITH_CXX11ABI: 0
steps:
- checkout
- - restore_cache:
- key: v1-node6-clang39-release
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build node
- command: make node
- - run:
- name: Run node tests
- command: |
- source scripts/circle_setup.sh
- mapbox_install_logbt
- mapbox_install_apitrace
- mapbox_export_mesa_library_path
- xvfb-run --server-args="-screen 0 1024x768x24" \
- ./logbt -- apitrace trace --api=egl -v make test-node
- - run:
- name: Publish node package
- when: on_success
- command: platform/node/scripts/after_success.sh
- - save_cache:
- key: v1-node6-clang39-release
- paths:
- - node_modules
- - /root/.ccache
- - store_artifacts:
- path: mapbox-gl-js/test/integration/render-tests/index.html
- destination: render-tests
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *save-cache
+ - *run-node-linux-tests
+ - *publish-node-package
+ - *upload-render-tests
# ------------------------------------------------------------------------------
- node6-clang39-debug:
+ node6-gcc6-debug:
docker:
- - image: mbgl/ci:r3-linux-clang-3.9
+ - image: mbgl/7d2403f42e:linux-gcc-6
+ resource_class: large
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
+ 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)
- DISPLAY: :0
steps:
- checkout
- - restore_cache:
- key: v1-node6-clang39-debug
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build node
- command: make node
- - run:
- name: Run node tests
- command: |
- source scripts/circle_setup.sh
- mapbox_install_logbt
- mapbox_install_apitrace
- mapbox_export_mesa_library_path
- xvfb-run --server-args="-screen 0 1024x768x24" \
- ./logbt -- apitrace trace --api=egl -v make test-node
- - run:
- name: Publish node package
- when: on_success
- command: platform/node/scripts/after_success.sh
- - save_cache:
- key: v1-node6-clang39-debug
- paths:
- - node_modules
- - /root/.ccache
- - store_artifacts:
- path: mapbox-gl-js/test/integration/render-tests/index.html
- destination: render-tests
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *save-cache
+ - *run-node-linux-tests-recycle-map
+ - *publish-node-package
+ - *upload-render-tests-recycle-map
# ------------------------------------------------------------------------------
- linux-clang39-debug:
+ linux-clang-3.8-libcxx-debug:
docker:
- - image: mbgl/ci:r3-linux-clang-3.9
+ - image: mbgl/7d2403f42e:linux-clang-3.8-libcxx
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 6
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Debug
WITH_EGL: 1
- DISPLAY: :0
+ WITH_CXX11ABI: 1
steps:
- checkout
- - restore_cache:
- key: v1-linux-clang39-debug
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build linux
- command: make linux
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-linux
+ - *show-ccache-stats
+ - *save-cache
+
+# ------------------------------------------------------------------------------
+ linux-clang4-sanitize-address:
+ docker:
+ - image: mbgl/7d2403f42e: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: Build benchmark
- command: make benchmark
+ 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/7d2403f42e: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: Build test
- command: make test
+ 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/7d2403f42e: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: |
- source scripts/circle_setup.sh
- mapbox_export_mesa_library_path
- xvfb-run --server-args="-screen 0 1024x768x24" \
- make run-test
- - save_cache:
- key: v1-linux-clang39-debug
- paths:
- - node_modules
- - /root/.ccache
+ 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/7d2403f42e:linux-gcc-4.9
+ resource_class: large
+ working_directory: /src
+ environment:
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
+ 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:r3-linux-gcc-5
+ - image: mbgl/7d2403f42e:linux-gcc-5
+ resource_class: large
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 2
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Debug
WITH_EGL: 1
WITH_COVERAGE: 1
- DISPLAY: :0
steps:
- checkout
- - restore_cache:
- key: v1-linux-gcc5-debug-coverage
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build linux
- command: make linux
- - run:
- name: Build benchmark
- command: make benchmark
- - run:
- name: Build test
- command: make test
- - run:
- name: Run tests
- command: |
- source scripts/circle_setup.sh
- mapbox_export_mesa_library_path
- xvfb-run --server-args="-screen 0 1024x768x24" \
- make run-test
+ - *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: |
- source scripts/circle_setup.sh
platform/linux/scripts/coveralls.sh
- - save_cache:
- key: v1-linux-gcc5-debug-coverage
- paths:
- - node_modules
- - /root/.ccache
# ------------------------------------------------------------------------------
linux-gcc5-release-qt4:
docker:
- - image: mbgl/ci:r3-linux-gcc-5-qt-4
+ - image: mbgl/7d2403f42e:linux-gcc-5-qt-4
+ resource_class: large
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 2 # OOM, causing the compiler to crash.
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Release
GTEST_OUTPUT: xml
LD_PRELOAD: /usr/lib/x86_64-linux-gnu/libjemalloc.so
- DISPLAY: 0
steps:
- checkout
- - restore_cache:
- key: v1-linux-gcc5-release-qt4
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build qt-app
- command: make qt-app
- - run:
- name: Build qt-test
- command: make qt-test
+ - *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: |
- source scripts/circle_setup.sh
- mapbox_export_mesa_library_path
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)"
- - save_cache:
- key: v1-linux-gcc5-release-qt4
- paths:
- - node_modules
- - /root/.ccache
# ------------------------------------------------------------------------------
linux-gcc5-release-qt5:
docker:
- - image: mbgl/ci:r3-linux-gcc-5-qt-5
+ - image: mbgl/7d2403f42e:linux-gcc-5-qt-5.9
+ resource_class: large
working_directory: /src
environment:
- LIBSYSCONFCPUS: 6
- JOBS: 2 # OOM, causing the compiler to crash.
+ LIBSYSCONFCPUS: 4
+ JOBS: 4
BUILDTYPE: Release
WITH_QT_I18N: 1
- DISPLAY: 0
steps:
- checkout
- - restore_cache:
- key: v1-linux-gcc5-release-qt5
- paths:
- - node_modules
- - /root/.ccache
- - run:
- name: Build qt-app
- command: make qt-app
- - run:
- name: Build qt-test
- command: make qt-test
+ - *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: |
- source scripts/circle_setup.sh
- mapbox_export_mesa_library_path
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
- - save_cache:
- key: v1-linux-gcc5-release-qt5
- paths:
- - node_modules
- - /root/.ccache
+ build/qt-linux-x86_64/Release/mbgl-test --gtest_filter=-*.Load --gtest_filter=-Memory.Vector
+
+# ------------------------------------------------------------------------------
+ ios-debug:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: Debug
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-ios-test
+ - *check-public-symbols
+ - run:
+ name: Lint plist files
+ command: make ios-lint
+ - *show-ccache-stats
+ - *save-cache
+
+# ------------------------------------------------------------------------------
+ ios-sanitize-address:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: Debug
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - run:
+ name: Build and run SDK unit tests with address sanitizer
+ command: make ios-sanitize-address
+ - *show-ccache-stats
+ - *save-cache
+
+# ------------------------------------------------------------------------------
+ ios-sanitize-thread:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: Debug
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - run:
+ name: Build and run SDK unit tests with thread sanitizer
+ command: make ios-sanitize-thread
+ - *show-ccache-stats
+ - *save-cache
+
+# ------------------------------------------------------------------------------
+ macos-debug:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: Debug
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-macos-test
+ - *check-public-symbols
+ - run:
+ name: Lint plist files
+ command: make macos-lint
+ - *show-ccache-stats
+ - *save-cache
+ - store_artifacts:
+ path: test/fixtures
+ destination: test/fixtures
+
+# ------------------------------------------------------------------------------
+ macos-debug-qt5:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: Debug
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *install-macos-qt-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-qt-app
+ - *build-qt-test
+ - run:
+ name: Run qt-test
+ command: make run-qt-test
+ - *show-ccache-stats
+ - *save-cache
+ - store_artifacts:
+ path: test/fixtures
+ destination: test/fixtures
+
+# ------------------------------------------------------------------------------
+ macos-release-node4:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: RelWithDebInfo
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *install-macos-node4-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *save-cache
+ - *run-node-macos-tests
+ - *publish-node-package
+ - *upload-render-tests
+
+# ------------------------------------------------------------------------------
+ macos-release-node6:
+ macos:
+ xcode: "9.0"
+ environment:
+ BUILDTYPE: RelWithDebInfo
+ HOMEBREW_NO_AUTO_UPDATE: 1
+ steps:
+ - checkout
+ - *install-macos-dependencies
+ - *install-macos-node6-dependencies
+ - *generate-cache-key
+ - *restore-cache
+ - *reset-ccache-stats
+ - *build-node
+ - *show-ccache-stats
+ - *save-cache
+ - *run-node-macos-tests
+ - *publish-node-package
+ - *upload-render-tests