summaryrefslogtreecommitdiff
path: root/circle.yml
diff options
context:
space:
mode:
Diffstat (limited to 'circle.yml')
-rw-r--r--circle.yml527
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