diff --git a/circle.yml b/circle.yml index b45a62386..6fdced58d 100644 --- a/circle.yml +++ b/circle.yml @@ -2,123 +2,6 @@ version: 2.1 workflows: version: 2 - mbgl-next: - jobs: - - next-sanity-checks - - next-build-template: - name: next-android-armeabi-v7a-release - executor_name: ubuntu-disco - target_is_android: true - 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 - 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 - config_params: '-G Ninja -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8' - - next-build-template: - name: next-FIXME-linux-asan - 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 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=address' - test_params: '|| true' - - next-build-template: - name: next-linux-tsan - 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 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=thread' - - next-build-template: - name: next-FIXME-linux-memsan - 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 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=memory' - test_params: '|| true' - - next-build-template: - name: next-FIXME-linux-ubsan - 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 -DCMAKE_BUILD_TYPE=Sanitize -DMBGL_WITH_SANITIZER=undefined' - test_params: '|| true' - - next-build-template: - name: next-qt5-linux-gcc5-release - executor_name: ubuntu-disco - target_is_linux: true - 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 - 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 - 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: # @@ -129,28 +12,6 @@ workflows: # unique aspect of the build environment. # - {build type} is typically "debug" or "release". # - - android-debug-arm-v7-buck - - android-arm-template: - name: android-debug-arm-v8 - - android-arm-template: - name: android-gnustl-arm-v7 - stl: gnustl_shared - firebase_device_id: "flo" - firebase_device_os: "21" - image: android-ndk-r17c:1d5db0eb34 - abi: arm-v7 - - android-release: - filters: - tags: - only: /android-v.*/ - - node-macos-release: - filters: - tags: - only: /node-.*/ - - linux-clang-7-sanitize-address-undefined - - linux-clang-7-sanitize-thread - - linux-gcc5-debug-coverage - - linux-doxygen - ios-debug - ios-debug-xcode10 - ios-release-template: @@ -179,108 +40,7 @@ workflows: - ios-static-analyzer-nightly - ios-static-analyzer-nightly-xcode10 -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.1.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 - - run: - name: Code Generators macOS - command: | - platform/darwin/scripts/generate-style-code.js - platform/darwin/scripts/update-examples.js - git add -A && git diff --staged --exit-code - 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/render - if [ -f mapbox-gl-js/test/integration/index.html ]; then cp mapbox-gl-js/test/integration/index.html /tmp/tests/render; fi - mkdir -p /tmp/tests/coredumps - if ls core* 1> /dev/null 2>&1; then cp core* /tmp/tests/coredumps; 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 --output-on-failure << parameters.test_params >> npm-install: steps: - run: @@ -336,19 +96,6 @@ commands: keys: - 'node_modules/v1/{{ arch }}/{{ checksum "package.json" }}' - 'node_modules/v1/{{ arch }}' - save-mason_packages-cache: - steps: - - save_cache: - name: Save mason_packages cache - key: 'mason_packages/v3/{{ arch }}/{{ checksum "cmake/mason-dependencies.cmake" }}' - paths: [ "mason_packages/.binaries" ] - restore-mason_packages-cache: - steps: - - restore_cache: - name: Restore mason_packages cache - keys: - - 'mason_packages/v3/{{ arch }}/{{ checksum "cmake/mason-dependencies.cmake" }}' - - 'mason_packages/v3/{{ arch }}' save-ccache: steps: - save_cache: @@ -365,19 +112,6 @@ commands: - 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-target-branch" }}/{{ checksum ".circle-merge-base" }}' - 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}/{{ checksum ".circle-target-branch" }}' - 'ccache/v1/{{ arch }}/{{ .Environment.CIRCLE_JOB }}' - save-gradle-cache: - steps: - - save_cache: - name: Save gradle cache - key: 'gradle/v1/{{ checksum "platform/android/gradle/dependencies.gradle" }}/{{ checksum "platform/android/build.gradle" }}/{{ checksum "platform/android/gradle/wrapper/gradle-wrapper.properties" }}' - paths: [ "/root/.gradle" ] - restore-gradle-cache: - steps: - - restore_cache: - name: Restore gradle cache - keys: - - 'gradle/v1/{{ checksum "platform/android/gradle/dependencies.gradle" }}/{{ checksum "platform/android/build.gradle" }}/{{ checksum "platform/android/gradle/wrapper/gradle-wrapper.properties" }}' - - 'gradle/v1' install-dependencies: @@ -388,12 +122,6 @@ commands: ccache: type: boolean default: true - mason: - type: boolean - default: true - gradle: - type: boolean - default: false steps: - checkout - when: @@ -403,12 +131,6 @@ commands: - when: condition: << parameters.ccache >> steps: [ prepare-ccache, restore-ccache, reset-ccache-stats ] - - when: - condition: << parameters.mason >> - steps: [ restore-mason_packages-cache ] - - when: - condition: << parameters.gradle >> - steps: [ restore-gradle-cache ] save-dependencies: parameters: node_modules: @@ -417,12 +139,6 @@ commands: ccache: type: boolean default: true - mason: - type: boolean - default: true - gradle: - type: boolean - default: false steps: - when: condition: << parameters.node_modules >> @@ -430,24 +146,6 @@ commands: - when: condition: << parameters.ccache >> steps: [ save-ccache, show-ccache-stats ] - - when: - condition: << parameters.mason >> - steps: [ save-mason_packages-cache ] - - when: - condition: << parameters.gradle >> - steps: [ save-gradle-cache ] - - - setup-llvm-symbolizer: - steps: - - 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 configure-cmake: @@ -459,26 +157,6 @@ commands: cd build cmake -DWITH_COVERAGE=${WITH_COVERAGE:0} -DWITH_OSMESA=${WITH_OSMESA:0} -DWITH_EGL=${WITH_EGL:0} .. cd .. - build-node: - steps: - - run: - name: Build node - command: make node-all - build-linux: - steps: - - run: - name: Build linux - command: make linux - build-benchmark: - steps: - - run: - name: Build benchmark - command: make benchmark - build-test: - steps: - - run: - name: Build test - command: make test build-ios-test: steps: - run: @@ -505,28 +183,6 @@ commands: command: make darwin-check-public-symbols - conditionally-skip-firebase: - steps: - - run: - name: Check if Firebase should be skipped - command: | - SKIPPABLE_TAG=$( git log -1 | grep -ioE -e "\[(skip.firebase|firebase.skip)\]" -e "\[((i|mac)os)+(, (i|mac)os)?\]" -e "\[darwin\]" || true ) - if [ -n "${SKIPPABLE_TAG}" ]; then - echo "Skipping Firebase tests because commit message contained: '${SKIPPABLE_TAG}'" - echo 'export SKIP_FIREBASE=1' >> $BASH_ENV - fi - login-google-cloud-platform: - steps: - - run: - name: Log in to Google Cloud Platform - command: | - if [[ -n "${GCLOUD_SERVICE_ACCOUNT_JSON}" && -z "${SKIP_FIREBASE:-}" ]]; then - echo "${GCLOUD_SERVICE_ACCOUNT_JSON}" > secret.json - gcloud auth activate-service-account --key-file secret.json --project android-gl-native - rm secret.json - fi - - install-ios-packaging-dependencies: steps: - run: @@ -542,45 +198,6 @@ commands: name: Install macOS dependencies command: brew install cmake ccache - install-node-macos-dependencies: - steps: - - run: - name: Install Node macOS dependencies - command: | - brew install node@8 - brew link node@8 --force --overwrite - - run-node-macos-tests: - steps: - - run: - name: Run node tests - command: make test-node - - run-unit-tests: - steps: - - run: - name: Run tests - command: | - xvfb-run --server-args="-screen 0 1024x768x24" \ - make run-test - - run-unit-tests-sanitized: - steps: - - run: - name: Run tests - command: | - # Source.RenderTileSetSourceUpdate and Source.InvisibleSourcesTileNecessity are filtered out due to #15294 - xvfb-run --server-args="-screen 0 1024x768x24" make run-test--Source.RenderTileSetSourceUpdate:Source.InvisibleSourcesTileNecessity 2> >(tee sanitizer 1>&2) - # Unfortunately, Google Test eats the status code, so we'll have to check the output. - [ -z "$(sed -n '/^SUMMARY: .*Sanitizer:/p' sanitizer)" ] - - publish-node-package: - steps: - - run: - name: Publish node package - when: on_success - command: platform/node/scripts/publish.sh - collect-xcode-build-logs: steps: - run: @@ -631,430 +248,6 @@ commands: fi jobs: - next-sanity-checks: - executor: ubuntu-disco - steps: - - checkout - - next-prepare - - next-config: - config_params: '-G Ninja -DCMAKE_C_COMPILER=clang-8 -DCMAKE_CXX_COMPILER=clang++-8' - - run: - name: Code Generators - command: | - platform/android/scripts/generate-style-code.js - platform/default/include/mbgl/storage/offline_schema.js - scripts/generate-file-lists.js - scripts/generate-shaders.js - scripts/generate-style-code.js - git add -A && git diff --staged --exit-code - - 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 --ignore-submodules=all --no-color origin/master... *.cpp *.hpp | clang-format-diff-8 -p1 -i - git diff --exit-code - - run: - name: Clang Tidy - command: | - run-clang-tidy-8 -quiet -j24 -p build $PWD/src/.*cpp $PWD/platform/.*cpp |tee clang-tidy.log - grep -o \\[[a-z].*-.*[a-z]\] clang-tidy.log |sort |uniq -c |sort -n - mkdir -p /tmp/tests/clang-tidy - if [ -f clang-tidy.log ]; then cp clang-tidy.log /tmp/tests/clang-tidy; fi - - 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 - -# ------------------------------------------------------------------------------ - android-arm-template: - parameters: - stl: - type: string - default: "c++_static" - image: - type: string - default: android-ndk-r20:7b7c4b42cf - firebase_device_id: - type: string - default: sailfish - firebase_device_os: - type: string - default: "26" - abi: - type: string - default: "arm-v8" - docker: - - image: mbgl/<< parameters.image >> - resource_class: xlarge - working_directory: /src - environment: - LIBSYSCONFCPUS: 8 - JOBS: 8 - BUILDTYPE: Debug - IS_LOCAL_DEVELOPMENT: false - MBGL_ANDROID_STL: << parameters.stl >> - steps: - - install-dependencies: { gradle: true } - - check-if-this-job-can-be-skipped - - run: - name: Initialize vendor submodules - command: git submodule update --init platform/android/vendor - - run: - name: Check code style - command: make android-check - - run: - name: Run Android unit tests - command: make run-android-unit-test - - run: - name: Build libmapbox-gl.so for << parameters.abi >> - command: make android-lib-<< parameters.abi >> - - run: - name: Generate Espresso sanity tests - command: make test-code-android - - run: - name: Build Test APK - command: | - if [ -n "${MAPBOX_DEVELOPER_CONFIG_XML}" ]; then - echo "${MAPBOX_DEVELOPER_CONFIG_XML}" > platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/developer-config.xml - make android-ui-test-<< parameters.abi >> - fi - - save-dependencies: { gradle: true } - - conditionally-skip-firebase - - login-google-cloud-platform - - run: - name: Run instrumentation tests on Firebase - no_output_timeout: 20m - command: | - if [[ -n "${GCLOUD_SERVICE_ACCOUNT_JSON}" && -z "${SKIP_FIREBASE:-}" ]]; then - gcloud firebase test android models list - gcloud firebase test android run --type instrumentation \ - --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 << parameters.firebase_device_id >> --os-version-ids << parameters.firebase_device_os >> --locales en --orientations portrait --timeout 20m \ - --environment-variables coverage=true,coverageFile="/sdcard/coverage.ec" --directories-to-pull /sdcard --results-dir mapbox-android-sdk-${CIRCLE_BUILD_NUM} - coverageFile=`gsutil ls gs://test-lab-186672a0qp5bq-ycr70axads3nc/mapbox-android-sdk-${CIRCLE_BUILD_NUM}/**/*.ec | tail -1` - gsutil cp $coverageFile $PWD/platform/android/MapboxGLAndroidSDK/build/jacoco | true - fi - - run: - name: Parse and send Jacoco reports - command: | - if [[ $CIRCLE_BRANCH == master ]]; then - make android-create-jacoco-report && make android-parse-and-send-jacoco-report - fi - - store_artifacts: - 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 - - store_artifacts: - path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/debug/obj - -# ------------------------------------------------------------------------------ - android-release: - docker: - - image: mbgl/android-ndk-r20:7b7c4b42cf - resource_class: xlarge - working_directory: /src - environment: - LIBSYSCONFCPUS: 8 - JOBS: 8 - BUILDTYPE: Release - IS_LOCAL_DEVELOPMENT: false - steps: - - install-dependencies: { gradle: true } - - check-if-this-job-can-be-skipped - - run: - name: Initialize vendor submodules - command: git submodule update --init platform/android/vendor - - run: - name: Android nitpick - command: make run-android-nitpick - - run: - name: Trigger core benchmark run - command: | - if [ -n "${MOBILE_METRICS_TOKEN}" ]; then - if [[ $CIRCLE_BRANCH == master ]]; then - curl -u ${MOBILE_METRICS_TOKEN}: -d build_parameters[CIRCLE_JOB]=android-core-benchmark https://circleci.com/api/v1.1/project/github/mapbox/mobile-metrics/tree/master - fi - fi - - run: - name: Trigger android benchmark run - command: | - if [ -n "${MOBILE_METRICS_TOKEN}" ]; then - if [[ $CIRCLE_BRANCH == master ]]; then - curl -u ${MOBILE_METRICS_TOKEN}: -d build_parameters[CIRCLE_JOB]=android-benchmark https://circleci.com/api/v1.1/project/github/mapbox/mobile-metrics/tree/master - fi - fi - - run: - name: Generate Maven credentials - command: | - if [ -n "${BINTRAY_USER}" ]; then - echo "BINTRAY_USER=$BINTRAY_USER - BINTRAY_API_KEY=$BINTRAY_API_KEY - GPG_PASSPHRASE=$GPG_PASSPHRASE" - fi - - run: - name: Update version name - command: | - if [[ $CIRCLE_TAG == android-v* ]]; then - sed -i -e "s/^VERSION_NAME=.*/VERSION_NAME=${CIRCLE_TAG:9}/" platform/android/MapboxGLAndroidSDK/gradle.properties - fi - - run: - name: Build package - command: make apackage - - run: - name: Build release Test App - command: make android - - run: - name: Generate javadoc - command: make android-javadoc - - save-dependencies: { gradle: true } - - run: - name: gzip debugable .so files - command: | - gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/arm64-v8a/libmapbox-gl.so && \ - gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/armeabi-v7a/libmapbox-gl.so && \ - gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86/libmapbox-gl.so && \ - gzip platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86_64/libmapbox-gl.so - - store_artifacts: - path: platform/android/MapboxGLAndroidSDKTestApp/build/outputs/apk/release - destination: . - - store_artifacts: - path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/arm64-v8a/libmapbox-gl.so.gz - - store_artifacts: - path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/armeabi-v7a/libmapbox-gl.so.gz - - store_artifacts: - path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86/libmapbox-gl.so.gz - - store_artifacts: - path: platform/android/MapboxGLAndroidSDK/build/intermediates/cmake/release/obj/x86_64/libmapbox-gl.so.gz - - run: - name: Trigger external deploy steps - command: | - export VERSION_TAG=${CIRCLE_TAG} - export GITHUB_TOKEN=${DANGER_GITHUB_API_TOKEN} - export DOCS_REPO="android-docs" - scripts/trigger-maps-documentation-deploy-steps.sh - background: true -# - run: -# name: Record size -# command: platform/android/scripts/metrics.sh -# ------------------------------------------------------------------------------ - android-debug-arm-v7-buck: - docker: - - image: mbgl/android-ndk-r17c-buck:07c5ef2e71 - working_directory: /src - environment: - LIBSYSCONFCPUS: 2 - JOBS: 2 - BUILDTYPE: Debug - ANDROID_NDK: /android/sdk/ndk-bundle - steps: - - checkout - - npm-install - - prepare-environment - - check-if-this-job-can-be-skipped - - run: - name: Checkout submodules - command: | - git submodule update --init - git submodule foreach git submodule update --init - - run: - name: Build Android library - command: | - cd misc/buck - buck build mapbox-gl-native:android-core - -# ------------------------------------------------------------------------------ - node-macos-release: - macos: - xcode: "11.1.0" - environment: - BUILDTYPE: RelWithDebInfo - HOMEBREW_NO_AUTO_UPDATE: 1 - HOMEBREW_NO_INSTALL_CLEANUP: 1 - steps: - - install-macos-dependencies - - install-node-macos-dependencies - - install-dependencies - - check-if-this-job-can-be-skipped - - build-node - - save-dependencies - - run-node-macos-tests - - publish-node-package - - collect-xcode-build-logs - - upload-xcode-build-logs - -# ------------------------------------------------------------------------------ - linux-clang-7-sanitize-address-undefined: - docker: - - image: mbgl/linux-clang-7:a5a3c52107 - resource_class: large - working_directory: /src - environment: - LIBSYSCONFCPUS: 4 - JOBS: 4 - BUILDTYPE: Sanitize - WITH_EGL: 1 - GDB: '' # Do not run with GDB - CXXFLAGS: -fsanitize=address -fsanitize=undefined - LDFLAGS: -fsanitize=address -fsanitize=undefined - ASAN_OPTIONS: detect_leaks=0:color=always:print_summary=1 - UBSAN_OPTIONS: print_stacktrace=1:color=always:print_summary=1 - steps: - - install-dependencies - - check-if-this-job-can-be-skipped - - setup-llvm-symbolizer - - build-test - - save-dependencies - - run-unit-tests-sanitized - -# ------------------------------------------------------------------------------ - linux-clang-7-sanitize-thread: - docker: - - image: mbgl/linux-clang-7:a5a3c52107 - resource_class: large - 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: - - install-dependencies - - check-if-this-job-can-be-skipped - - setup-llvm-symbolizer - - build-test - - save-dependencies - - run-unit-tests-sanitized - -# ------------------------------------------------------------------------------ - linux-gcc5-debug-coverage: - docker: - - image: mbgl/linux-gcc-5:54f59e3ac5 - resource_class: large - working_directory: /src - environment: - LIBSYSCONFCPUS: 4 - JOBS: 4 - BUILDTYPE: Debug - WITH_EGL: 1 - WITH_COVERAGE: 1 - steps: - - install-dependencies - - check-if-this-job-can-be-skipped - - build-linux - - build-benchmark - - build-test - - save-dependencies - - run-unit-tests - - run: - name: Upload coverage results to codecov.io - command: | - bash <(curl -sSfL https://codecov.io/bash) || echo 'Codecov failed to upload' - - run: - name: Upload coverage metrics to s3 - command: | - if [[ $CIRCLE_BRANCH == master ]]; then - scripts/publish_core_codecoverage.js -p Linux -s Core - fi - -# ------------------------------------------------------------------------------ - linux-doxygen: - docker: - - image: mbgl/linux-gcc-5:54f59e3ac5 - resource_class: large - working_directory: /src - environment: - LIBSYSCONFCPUS: 2 - JOBS: 2 - BUILDTYPE: Debug - WITH_EGL: 1 - WITH_COVERAGE: 1 - steps: - - install-dependencies - - check-if-this-job-can-be-skipped - - run: - name: Install doxygen - command: apt update && apt install -y doxygen - - build-linux - - save-dependencies - - run: - name: Check documentation coverage - command: | - platform/linux/ninja -C "build/linux-$(uname -m)/Debug" doxygen_coverage - scripts/publish_doxygen_coverage.js "build/linux-$(uname -m)/Debug/doxygen-coverage.json" - -# ------------------------------------------------------------------------------ ios-debug: macos: xcode: "11.1.0" @@ -1265,14 +458,12 @@ jobs: name: Trigger external deploy steps command: | export VERSION_TAG=${CIRCLE_TAG} - export GITHUB_TOKEN=${DANGER_GITHUB_API_TOKEN} export DOCS_REPO="ios-sdk" scripts/trigger-maps-documentation-deploy-steps.sh - run: name: Build, package, and upload iOS release command: | export VERSION_TAG=${CIRCLE_TAG} - export GITHUB_TOKEN=${DANGER_GITHUB_API_TOKEN} platform/ios/scripts/deploy-packages.sh - deploy: name: Deploy to CocoaPods